作用
- sed命令是一个非交互式的行文本编辑器,它能对文件内容进行编辑,默认每次处理文本文件中所匹配到一行内容到模式空间,然后用后面的命令进行操作,操作完成之后,会把模式空间里面的内容输出到屏幕上,然后把模式空间中的内容删除,同时把下一行所匹配到的内容读入模式空间内,依次循环,直到读取完整个文件。
- sed 命令处理的是缓冲区中的内容,其实这里的缓冲区,就是模式空间
语法
sed语法支持两种格式,分别是
- sed [options] 'address command' file
- sed [options] -f [scripefile] file
对以上的几个英语字符进行说明:
- options为选项,其中sed支持的选项会在下面的选项小结说明
- address : 相当于匹配的条件,会在地址中进行说明
- command为命令,相当于一个参数,放在地址后面,具体见下面的命令小节说明
- file :为文本文件
需要说明的是,使用时address和command会挨在一起,中间没有空格,上面语法中间加空格是为了说明这是两个部分
以下为sed命令的工作流程图
![fb2a0c04c8c567d723350167aa034b53.png](https://img-blog.csdnimg.cn/img_convert/fb2a0c04c8c567d723350167aa034b53.png)
选项
这里的选项就是指sed之后的options,常见的选项具体如下:
-e ,--expression=script 以选项中指定的script参数来处理文本文件,可以指定多个命令-f file,--files=script以文件中的指定的参数来处理文本文件-n ,--quiet ,--slient取消默认输出,sed默认会输出所有文本内容,使用-n参数后只显示处理过的行-r ,--regexp-extended支持扩展正则表达式-i,--in-place[=SUFFIX]直接修改文件内容
地址
这里的地址就是语法格式中的address部分,是在单引号里的前一部分 。
替换标记说明linenumber指定特定行号startline,endline指定起始行号和结束行号linenumber,+nn为数字,表示从指定行号向后n行/pattern/已正则表达式表示的匹配模式/pattern1, /pattern2/从模式匹配1到模式匹配2pattern/,x在给定行号上查询包含模式的行x,/pattern/通过行号和模式查询匹配的行x,y!查询不包含指定行号x和y的行
命令
这里的指令就是command,这个一般放在单引号内,同时和要处理的字符放在一起,只是command放在字符的前面。
a 追加,向匹配行后面插入内容 i 插入,向匹配行前插入内容c 更改,更改匹配行的内容d 删除,删除匹配行的内容s 使用替换模式替换相应模式s/patten/newstring 替换,把patten匹配到的内容换成newstringp 打印,打印出匹配的内容,通过与-n选项配合使用= 标号,用来将匹配的行前标号n 读取下一行,遇到n会自动自动跳入下一行r 将内容读入文件{} 命令间的传递,类似于管道符|w 将匹配内容写入文件W 将匹配到行的第一行,保存到file中。
替换标记
- g : 表示将匹配到的内容进行全局替换 。
- 1 :表示前面第一个左括号所表示的内容 ,2表示前面第二个左括号中表示的内容,依次类推
- & : 表示前面匹配到的内容
正则匹配
正在匹配在上面已经介绍到,详情请见正则表达式介绍。具体见:35个参数13个案例,全面解析Linux三剑客之grep命令
实例
以下主要针对地址指令的实战练习
先准备数据文件aa.txt,通过cat查看aa.txt文件内容
[root@localhost t