sed是linux中支持正则表达式的流编辑器
作用:修改和替换文本
sed拥有两个两个空间,分别是pattern space和hold space
pattern space是处理数据的地方 注意:每处理一行数据后,模式空间就会清空
hold space是临时存放数据的地方
模式空间(pattern space)和暂存空间(hold space)相关的命令:
n 输出模式空间行,读取下一行替换当前模式空间的行,执行下一条处理命令而非第一条命令。
N 读入下一行,追加到模式空间行后面,此时模式空间有两行。
h 把模式空间里的行拷贝到暂存空间。
H 把模式空间里的行追加到暂存空间。
g 用暂存空间的内容替换模式空间的行。
G 把暂存空间的内容追加到模式空间的行后。
x 将暂存空间的内容于模式空间里的当前行互换。
! 对所选行以外的所有行应用命令。
sed的语法格式:
sed [选项] sed编辑命令 输入文件
shell 命令 | sed [选项] sed编辑命令
sed [选项] -f sed脚本文件 输入文件
sed的常用选项
-n:只显示匹配处理的行(否则会输出所有) *
-e:执行多个编辑命令时(一般用;代替)
-i:直接在文件中进行修改,而不是输出到屏幕 *
-r:支持扩展正则表达式
-f:从脚本文件中读取内容并执行(文件中的编辑命令每行一个,不用;隔开)
sed的常用编辑命令
p:打印匹配行 print
d:删除指定行 delete
a:在匹配行后面追加 append
i:在匹配行前面插入 insert
c:整行替换
r:将文件的内容读入 read
w:将文本写入文件 write
s:字符串替换(匹配正则表达式)substitution
= :输出行号
~匹配符号
匹配单数行:cat -n /etc/passwd|sed -n ‘1~2p’
匹配双数行:cat -n /etc/passwd|sed -n ‘2~2p’