shell中的sed

sed简介

sed(Stream Editor), 流编辑器。对标准输出或文件逐行进行处理。

sed的语法格式

1
2
stdout|sed[option] "pattern command"
sed [option] "pattern command" file

sed参数列表

选项 含义 说明
-n quiet/silent 经过sed处理过的行才会被列出来
-e script 直接在命令行进行sed编辑,默认选项
-f script-file 直接运行script-file内的sed命令
-r redxp-extended 支持扩展正则表达式
-i 直接编辑源文件

sed中的编辑命令

类别 编辑命令 含义
查询 p 打印
增加 a 行后追加
增加 i 行前追加
增加 r 将文件内容追加到匹配行后面
增加 w 匹配行写入外部文件
删除 d 删除
修改 s/old/new 将行内第一个old替换为new
修改 s/old/new/g 将行内全部的old替换为new
修改 s/old/new/2g 将行内前2个old替换为new
修改 s/old/new/ig 将行内old全部替换为new, 忽略大小写

测试脚本

替换(c)

将第一行替换为shell

1
sed '1c shell' sed.txt

将第1-3行替换为java

1
sed '1,3c java' sed.txt

嵌入正则表达式, 用 //包住。替换所有包含win的行变为python

1
sed '/win/c python' sed.txt

删除(d)

删除第二行

1
sed '2d' sed.txt

删除最后一行($表示最后一行)

1
sed '$d' sed.txt

删除1-3行

1
sed '1, 3d' sed.txt

插入(i)

所有行之前插入#\

1
sed 'i##' sed.txt

1-3行之前插入0000

1
sed '1,3i0000' sed.txt

替换

替换文本中的每一行的第一个0 为 9

1
sed 's/0/9/' sed.txt

替换文本中的所有0 为 9

1
sed 's/0/9/g' sed.txt