sed命令

发布时间 2023-12-19 13:50:17作者: 我在路上回头看

批量编辑文本文件

语法格式:sed 参数 文件名

常用参数

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

参考示例

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

[root@liuwei ~]# cat -n /etc/passwd | sed -n '/root/p'
1	root:x:0:0:root:/root:/bin/bash
10	operator:x:11:0:operator:/root:/sbin/nologin

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

[root@liuwei ~]# sed 's/root/ROOT/g' passwd
ROOT:x:0:0:ROOT:/ROOT:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin

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

[root@liuwei ~]# sed '/root/d' passwd
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin

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

[root@liuwei ~]# sed -e 4a\NewLine passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
NewLine

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

[root@liuwei ~]# sed -e '4a NewLine1 \nNewLine2 \nNewLine3' passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
NewLine1 
NewLine2 
NewLine3

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

[root@liuwei ~]# sed '2,5d' passwd
root:x:0:0:root:/root:/bin/bash
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

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

[root@liuwei ~]# sed '2,5c NewSentence' passwd
root:x:0:0:root:/root:/bin/bash
NewSentence

读取指定文件的第3-7行

[root@liuwei ~]# sed -n '3,7p' passwd
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown