sed命令 – 批量编辑文本文件

ID:12574 / 打印

sed命令来自英文词组stream editor的缩写,其功能是利用语法/脚本对文本文件进行批量的编辑操作。sed命令最初由贝尔实验室开发,后被众多Linux系统集成,能够通过正则表达式对文件进行批量编辑,让重复性的工作不再浪费时间。

语法格式:sed 参数 文件名

常用参数:

-e使用指定脚本处理输入的文本文件 -n仅显示脚本处理后的结果
-f使用指定脚本文件处理输入的文本文件-r支持扩展正则表达式
-h显示帮助信息-V显示版本信息
-i直接修改文件内容,而不输出到终端  

参考示例

查找指定文件中带有某个关键词的行:

[root@linuxcool ~]# cat -n File.cfg | sed -n '/root/p'      20 rootpw --iscrypted $6$c2VGkv/8C3IEwtRt$iPEjNXml6v5KEmcM9okIT.Op9/LEpFejqR. kmQWAVX7fla3roq.3MMVKDahnv0l/pONz2WMNecy17WJ8Ib0iO1      40 pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty 

将指定文件中某个关键词替换成大写形式:

[root@linuxcool ~]# sed 's/root/ROOT/g' File.cfg  ………………省略输出信息……………… 

读取指定文件,删除所有带有某个关键词的行:

[root@linuxcool ~]# sed '/root/d' File.cfg  ………………省略输出信息……………… 

读取指定文件,在第4行后插入一行新内容:

[root@linuxcool ~]# sed -e 4a\NewLine File.cfg  #version=RHEL8  ignoredisk --only-use=sda  autopart --type=lvm  # Partition clearing information  NewLine ………………省略部分输出信息……………… 

读取指定文件,在第4行后插入多行新内容:

[root@linuxcool ~]# cat File.cfg | sed -e '4a NewLine1 \  > NewLine2 \  > NewLine3 '  #version=RHEL8  ignoredisk --only-use=sda  autopart --type=lvm  # Partition clearing information  NewLine1  NewLine2  NewLine3  clearpart --none --initlabel  # Use graphical install  graphical  ………………省略部分输出信息……………… 

读取指定文件,删除第2~5行的内容:

     1 root:x:0:0:root:/root:/bin/bash       6 sync:x:5:0:sync:/sbin:/bin/sync       7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown       8 halt:x:7:0:halt:/sbin:/sbin/halt  ………………省略部分输出信息……………… 

读取指定文件,替换第2~5行的内容:

[root@linuxcool ~]# sed '2,5c NewSentence' File.cfg  #version=RHEL8  NewSentence  # Use graphical install  graphical  repo --name="AppStream" --baseurl=file:///run/install/repo/AppStream  # Use CDROM installation media  cdrom  ………………省略部分输出信息……………… 

读取指定文件的第3~7行:

[root@linuxcool ~]# sed -n '3,7p' File.cfg  autopart --type=lvm  # Partition clearing information  clearpart --none --initlabel  # Use graphical install  graphical
上一篇: csplit命令 – 分割文件
下一篇: ed命令 – 文本编辑

作者:admin @ 24资源网   2024-10-01

本站所有软件、源码、文章均有网友提供,如有侵权联系308410122@qq.com

与本文相关文章

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。