xuxiaohui9216 发表于 2019-2-17 10:21:37

Linux命令sed

sed流编辑器:Stream EDitor
  sed行编辑器,使用sed,将文件的行加载到内存,符合sed模式空间的显示到屏幕上,sed默认不编辑文件,仅对模式空间的数据处理,处理结束后,将符合模式空间的行打印到屏幕上

sed模式空间

sed 'AddressCommand' file ...

options: 选项,如 -n静默模式,只显示符合条件的行,不显示模式空间的内容
Address: 指的是文件行的地址,如第一行到第10行
Command: 指的是对文件行的操作,删除,打印等
file: 指的是文件的路径
三个点: 可以接多个文件
options

1、-n
  静默模式,只显示符合条件的行,不显示模式空间的内容

2、-p

3、-e
  -e 'script' -e 'script' 引号里的内容,-e 可以指定多个

4、-r
  表示使用扩展的表达式

Address

1、Startline,Endline
  startline,开始行,默认是从第一行开始
endline, 结束行,$表示最后一行

2、/RegExp正则表达式/
  正则表达式匹配到的行,如 /^root/ 以root开始的行

3、/模式1/,/模式2/
  第一次被模式1匹配到的行开始,至第一次被模式2匹配到的行结束中间的所有行

4、LineNumber 行号

5、StartLine,+N
  从startline开始,向后N行,共N+1行

Command

1、d:删除符合条件的行

2、p:显示符合条件的行

3、a \string:在指定行的后面新加一行,内容为string

4、 i \string:在指定行的前面新加一行,内容为string

5、r file文件路径:将指定文件的内容,添加到符合条件的行的后面
http://i2.运维网.com/images/blog/201811/15/ac2da19e9e8db210d4984f126409c32b.png

6、w file文件路径:将指定范围的内容,另存至指定的文件中
http://i2.运维网.com/images/blog/201811/15/24484aa917dbb0c198eabc1131bc7d4f.png

s:查找并替换

s/查找/替换/修饰符
  s/查找/替换/g
s#查找#替换#g
s@查找@替换@g

修饰符:
  g 全局替换
i 忽略大小写
  例如使用s###g更改selinux配置文件
http://i2.运维网.com/images/blog/201811/15/a603a2d62c369ad8b0dfc9a340f4ba53.png
  s###g支持后项引用(将文本中的like->liker love->lover)
&代表查找到的内容,就替换为查找到的+r
http://i2.运维网.com/images/blog/201811/15/2f030a5a114c1015573010a0b34c00e1.png
http://i2.运维网.com/images/blog/201811/15/4275cf9484cf345cee26856118144f68.png

sed命令练习
http://i2.运维网.com/images/blog/201811/15/a6fcc49270e995ffdf8f08d5dabaa313.png
  -n静默模式,不使用-n,以UUID开始的行会打印屏幕上两次,第一次是模式空间输出,第二次是p 输出
http://i2.运维网.com/images/blog/201811/15/d9a1eea0eaceee4b65d9bfc0e553bf7f.png
http://i2.运维网.com/images/blog/201811/15/9f2bbddf6d8761b0e792625c00de82af.png
  删除文件的前两行,但不修改原文件
http://i2.运维网.com/images/blog/201811/15/5f64133088807ba710debc51cc7618d6.png
  删除文件的前两行,修改原文件
http://i2.运维网.com/images/blog/201811/15/5999a747b968d6dc927692ff5e54da81.png
  sed '2,+2d' zmg.txt
http://i2.运维网.com/images/blog/201811/15/2fefdd88690a4a69a1718b6277546fe6.png
sed '1,2a \hello' zmg.txt
http://i2.运维网.com/images/blog/201811/15/673e377a61e5a30262f6082da2547af3.png
sed '1,2i \hello' zmg.txt
http://i2.运维网.com/images/blog/201811/15/226c440cd1c7e80d335201dade8e35f8.png



页: [1]
查看完整版本: Linux命令sed