ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

sed命令用法

2022-09-16 12:34:00  阅读:240  来源: 互联网

标签:tmp sed 用法 命令 123 line root localhost


[sed命令]


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

  • 读取:sed 从输入流(文件、管道、标准输入)中读取一行内容并存储到临时的缓冲区中(又称模式空间,pattern space)。
  • 执行:默认情况下,所有的 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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有