当前位置: 首页 > news >正文

sed命令详解

sed命令详解

sed(stream editor,流编辑器)是 Linux 和 Unix 系统中功能强大的文本处理工具,它能够对输入流(如文件、管道输入等)进行逐行处理,从而实现多种多样的文本编辑操作。

基本语法

sed的基本语法形式如下:

sed [options] 'command' file(s)
  • options:这是一些可供选择的参数。例如,-n选项表示只输出经过处理的行;-i选项则用于直接修改文件内容,而不是将结果输出到标准输出。
  • command:要执行的编辑命令,可以是单个命令,也可以是由多个命令组成的脚本。
  • file(s):需要进行处理的文件。

常用命令

替换命令(s)
  • 语法s/pattern/replacement/flags
  • 功能:该命令用于将每行中第一个匹配到的pattern(模式)替换为replacement(替换内容)。
  • 示例
    • sed 's/old/new/' file.txt:此命令会将文件file.txt中的每行第一个“old”替换为“new”。
    • sed 's/old/new/g' file.txt:这里的“g”表示全局替换,即会将每行中所有的“old”都替换为“new”。
删除命令(d)
  • 语法d
  • 功能:使用该命令可以删除匹配到的行。
  • 示例sed '/pattern/d' file.txt:此命令会删除包含“pattern”的行。
插入命令(i)和追加命令(a)
  • 语法
    • i\inserted_text:在匹配行之前插入指定的文本。
    • a\appended_text:在匹配行之后追加指定的文本。
  • 功能:用于在指定位置插入或追加文本。
  • 示例
    • sed '/pattern/i\This is inserted text.' file.txt:该命令会在包含“pattern”的行之前插入“This is inserted text.”。
    • sed '/pattern/a\This is appended text.' file.txt:此命令会在包含“pattern”的行之后追加“This is appended text.”。

(四)打印命令(p)

  • 语法p
  • 功能:用于打印匹配到的行。
  • 示例sed -n '/pattern/p' file.txt:该命令会打印包含“pattern”的行,其中“-n”选项用于抑制默认输出,仅输出经过处理的行。
多行处理命令(N、H、h、G、g)
  • N:将下一行读入模式空间(pattern space),并与当前行合并。
  • H(大写):将模式空间的内容追加到保持空间(hold space)。
  • h(小写):将模式空间的内容复制到保持空间,覆盖原有内容。
  • G(大写):将保持空间的内容追加到模式空间。
  • g(小写):将保持空间的内容复制到模式空间,覆盖原有内容。
  • 示例:在处理包含多行内容的日志文件时,可以灵活运用这些命令来合并多行进行处理,以满足特定的文本处理需求。

高级用法

使用正则表达式

sed支持强大的正则表达式,这使得它能够更加灵活地进行文本匹配和处理。例如,sed '/^[0-9]+$/d' file.txt:这个命令会删除文件中只包含数字的行,其中^[0-9]+$是一个正则表达式,表示匹配一行中从开头到结尾都是数字的内容。

从文件读取命令

可以将一系列sed命令存储在一个文件中,然后使用-f选项读取该文件来执行命令。例如,先创建一个名为commands.sed的文件,文件内容为s/old/new/g,然后执行sed -f commands.sed file.txt,这样就可以按照文件中定义的命令对file.txt进行处理。

管道和重定向

sed可以与其他命令巧妙地结合使用,通过管道和重定向来实现复杂的文本处理流程。例如,cat file.txt | sed 's/old/new/' > new_file.txt:这个命令首先使用cat命令读取file.txt文件的内容,然后通过管道将其传递给sed命令进行“old”到“new”的替换操作,最后将处理结果通过重定向输出到new_file.txt文件中。

http://www.lryc.cn/news/461257.html

相关文章:

  • Linux高阶——1013—正则表达式练习
  • 【CMake】为可执行程序或静态库添加 Qt 资源文件,静态库不生效问题
  • 服务器、jvm、数据库的CPU飙高怎么处理
  • 自适应过滤法—初级
  • UML图有用吗?真正厉害的软件开发,有用的吗?什么角色用?
  • 基于Java+Springboot+Vue开发的酒店客房预订管理系统
  • OpenCV高级图形用户界面(5)获取指定滑动条(trackbar)的当前位置函数getTrackbarPos()的使用
  • 拓扑排序在实际开发中的应用
  • 【CTF-SHOW】Web入门 Web27-身份证日期爆破 【关于bp intruder使用--详记录】
  • Windows 添加右键以管理员身份运行 PowerShell
  • 数学建模算法与应用 第15章 预测方法
  • HC32F460KETA PETB JATA 工业 自动化 电机
  • linux系统,不定时kernel bug :soft lockup的问题
  • 【C语言教程】【常用类库】(十四)可移植库 - <unistd.h> 和 <sys/types.h>
  • Java项目实战II基于Spring Boot的周边游平台设计与实现(源码+数据库+文档)
  • 远程控制软件哪个好用:4款主流的远程控制软件大点评,谁最给力?
  • 基于springboot实习管理系统
  • (38)MATLAB分析带噪信号的频谱
  • 多级缓存-案例导入说明
  • 基于Python的自然语言处理系列(31):SpaCy + Training Neural Network
  • 在 cPanel 中管理区域编辑权限
  • web前端网页用户注册页面
  • 问题记录-- 在 Vue2 中动态更新 Select 组件的选项
  • Opencv形态学的膨胀操作、开运算与闭运算、梯度运算、礼帽与黑帽操作
  • keil 中添加gcc编译 stmf207
  • BEV相关
  • nodepad++带时间段的关键字搜索筛选
  • 【理论笔记】网工基础知识 1 —— 计算机网络基础知识
  • Z 字形变换
  • 在JasperReports中自动生成序列号