sed模式空间与暂存空间

sed模式空间与暂存空间

与模式空间和暂存空间(hold space)相关的命令:

n 首先输出当前模式空间行,然后读取下一行替换当前模式空间的行,继续执行后面的指令。
N 读入下一行,追加到模式空间行后面,此时模式空间有\n连接的两行,当作一行处理。
h 把模式空间里的行拷贝覆盖到暂存空间。
H 把模式空间里的行拷贝追加到暂存空间(以\n分割)。
g 用暂存空间的内容替换模式空间的行。
G 把暂存空间的内容追加到模式空间的行后(以\n分割)。
x 将暂存空间的内容与模式空间里的当前行互换。
! 对所选行以外的所有行应用命令。

注意:暂存空间里默认存储一个空行。

# 在偶数行后添加一个空行
root@bwhhkle:~# cat lines.bak 
1
2
3
4
5
6
7
8
root@bwhhkle:~# sed 'n;G' lines.bak 
1
2

3
4

5
6

7
8

# 把偶数行变为空行
root@bwhhkle:~# sed 'n;g' lines.bak 
1

3

5

7