sed是一种常见的流编辑器,可依照脚本的命令来处理、编辑文本文件,并且完美匹配正则表达式,功能强大。
1、sed命令语法:
sed [option] 'SCRIPTS' FILE... sed [-hHV][-e<script>][-f<script文件>][文本文件]
2、sed命令功能:
[option]
- -e
- -f
- -h或H显示帮助。
- -n 取消默认的完整输出,仅显示script处理后的结果。
- -V 显示版本信息。
[动作命令]
- a 新增,a后接字串,并在新一行出现。
- ,“a” 最后一行新增字串。
- c 取代,用此符号后的新文本替换当前行中的文本。
- d 删除行
- i 插入,i 的后面可以接字串。
- p 打印,常与“sed -n"连用。
- s 取代,与g连用,常与正则表达式搭配使用,例如例如1,20s/old/new/g。
- n 读入下一输入行,并从下一条命令而不是第一条命令开始对其的处理。
- q 结束或退出sed。
- w 将所选的行写入文件。
- r 从文件中读取输入行。
- y 将字符替换为另一字符,正则表达式除外。
- l 列出非打印字符,包括控制字符。
-iSUFFIX 修改源文件,同时创建一个备份文件。例如:sed -i.bak '1,10d' test,生成一个test.bak备份文件。
高级语法
- h/H 复制拷贝/追加模式空间(缓冲区)到存放空间
- g/G 粘贴 从存放空间取回/追加到模式空间
- x 两个空间内容的交换
- n/N 拷贝/追加下一行内容到当前
- D 删除\n之前的内容
- P 打印\n之前的内容
- b 无条件跳转
- t 满足匹配后的跳转
T 不满足匹配时跳转
3、实例

3.1只打印3行
sed -n '3p' /tmp/text.txt

3.2打印第5到第10行
sed -n '3,10p' /tmp/text.txt

3.3在第1行到第4行的每行添加1234567890
sed '1,5i 1234567890' /tmp/text.txt

3.4删除"1234567890"
sed '/1234567890/ d ' /tmp/text.txt
3.5打印5-10行,并显示行号
sed -n -e '5,10p' -e '=' /tmp/text.txt
3.6将第三行内容替换为glibc
sed '3cglibc' /tmp/text.txt
3.7删除空行
sed '/^$/d' newfile >> /tmp/text.txt
3.8把fstab中包含xfs的记录(行)写入新的文件中
sed '/xfs/w newfile' /tmp/text.txt

