其他分享
首页 > 其他分享> > sed命令用法

sed命令用法

作者:互联网

[sed命令]


sed 的工作流程主要包括读取、执行和显示三个过程。

sed的模式空间和保持空间

模式空间:sed处理文本内容行的一个临时缓冲区,模式空间中的内容会主动打印到标准输出,并自动清空模式空间

保持空间:sed处理文本内容行的另一个临时缓冲区,不同的是保持空间内容不会主动清空,也不会主动打印到标准输出,而是需要sed命令来进行处理

sed 命令的使用

追加插入和更改

a追加 //将你要追加的内容追加到第几行

[root@localhost tmp]# cat 123 
liu 
liuyang 
yangliu
[root@localhost tmp]# sed '2aliuyang' 123
liu 
liuyang 
liuyang
yangliu

i插入 //将 你要插入的内容插入到第几行+

[root@localhost tmp]# cat 123 
liu 
liuyang 
yangliu
[root@localhost tmp]# sed '2iabc' 123
liu 
abc
liuyang 
yangliu

c修改

[root@localhost tmp]# cat 123 
liu 
liuyang 
yangliu
[root@localhost tmp]# sed '/liu/chello' 123
hello
hello
hello

y 转换,对大小写进行转换

[root@localhost tmp]# cat 123 
liu 
liuyang 
yangliu
[root@localhost tmp]# sed 'y/liuyang/LIUYANG/' 123
LIU 
LIUYANG 
YANGLIU

p将模式空间的命令进行打印 P输出多行模式的第一部分,直到执行到第一个换行符位为止

//此处有两遍的原因是因为sed命令会打印一次,p命令也会打印一次使用-n抑制默认的输出

[root@localhost tmp]# sed 'p' 123
liu 
liu 
liuyang 
liuyang 
yangliu
yangliu
[root@zabbix ~]# cat aaa
hello aaa
hello b aaa
[root@zabbix ~]# sed '/aaa$/{N;/\nhello/{s// b &/;P;D}}' aaa
hello aaa b 
hello b aaa
[root@localhost tmp]# sed -n ' p' 123
liu 
liuyang 
yangliu

n下一步 //匹配以l开头的,然后n是读取到他的下一行,然后d进行删除。所有只有liuyag那一行被删除了

[root@localhost tmp]# cat 123 
liu 
liuyang 
yangliu
[root@localhost tmp]# sed '/^l/{n;d}' 123
liu 
yangliu
[root@zabbix ~]# sed '/^l/{N;d}' 123
yangliu

高级sed命令

N追加下一行

[root@localhost tmp]# cat 123
Consult Section 3.1 in the Owner and Operator
Guide for a description of the tape drives
available on your system.
[root@localhost tmp]# sed '/Operator$/{N;s/Owner and Operator\n/Installation /g}' 123
Consult Section 3.1 in the Installation Guide for a description of the tape drives
available on your system.

dD多行删除

[root@zabbix ~]# cat 123 
This line is followed by 1 blank line.

This line is followed by 2 blank line.


This line is followed by 3 blank line.



This line is followed by 4 blank line.




This is the end.
[root@zabbix ~]# sed '/^$/{N;/^\n$/d}' 123
This line is followed by 1 blank line.

This line is followed by 2 blank line.
This line is followed by 3 blank line.

This line is followed by 4 blank line.
This is the end.
[root@zabbix ~]# sed '/^$/{N;/^\n$/D}' 123
This line is followed by 1 blank line.

This line is followed by 2 blank line.

This line is followed by 3 blank line.

This line is followed by 4 blank line.

This is the end.

h,H //将匹配到的东西放入保持空间中,h复制,H追加

[root@zabbix ~]# cat aa
1
2
11
22
111
222
[root@zabbix ~]# sed '/1/{h;d};/2/{G}' aa
2
1
22
11
222
111
[root@zabbix ~]# sed '/1/{H;d;x}' aa
2
22
222

x //将保持空间的内容与模式空间的内容交换,下条命令本身执行出来的结果应该为2,1在保持空间中,因为前半条命令中已经将匹配到的所有1删掉了,后半条匹配的是2,然后使用x将他们交换

[root@zabbix ~]#  cat aa
1
2
11
22
111
222
[root@zabbix ~]# sed '/1/{h;d};/2/x' aa
1
11
111

g,G //将保持空间中的东西追加或复制到模式空间中

[root@zabbix ~]# sed '/1/{g;d};/2/H' aa
2
22
222
[root@zabbix ~]# sed '/1/{h;d};/2/G' aa
2
1
22
11
222
111

标签:tmp,sed,用法,命令,123,line,root,localhost
来源: https://www.cnblogs.com/TQingS/p/16699390.html