sed 命令是利用脚本来处理文本文件
pattern space --》处理数据的地方–》处理一行数据后,模式空间会清空
hold space --》临时存放数据的地方
sed的语法命令格式
sed [选项] sed编辑命令 输入文件
shell 命令 | sed [选项] sed编辑命令
sed [选项] -f sed脚本文件 输入文件
sed的常用选项
n:只显示匹配处理的行(否则会输出所有) *
-e:执行多个编辑命令时(一般用;代替)
-i:直接在文件中进行修改,而不是输出到屏幕 *
-r:支持扩展正则表达式
-f:从脚本文件中读取内容并执行(文件中的编辑命令每行一个,不用;隔开)
sed的常用编辑命令
p:打印匹配行 print
1.连续的行
cat /etc/passwd|sed -n '1,5p'
2.不连续的行,第10行和20行
cat /etc/passwd|sed -n '10p;20p'
3.输出第5行和第5行后面的5行
[root@localhost ~]# cat -n /etc/passwd|sed -n '5,+5p'
5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
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
9 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
10 operator:x:11:0:operator:/root:/sbin/nologin
4.输出5~100行以外的行
[root@localhost ~]# cat -n /etc/passwd|sed -n '5,100!p'
1 root:x:0:0:root:/root:/bin/bash
2 bin:x:1:1:bin:/bin:/sbin/nologin
3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
4 adm:x:3:4:adm:/var/adm:/sbin/nologin
5.步长输出
[root@localhost ~]# cat -n /etc/passwd|sed -n '1~2p' 单数行
[root@localhost ~]# cat -n /etc/passwd|sed -n '2~2p' 双数行
d:删除指定行 delete
a:在匹配行后面追加 append
i:在匹配行前面插入 insert
c:整行替换
r:将文件的内容读入 read
w:将文本写入文件 write
s:字符串替换(匹配正则表达式)substitution
= :输出行号
shell变量传到sed里
双引号
[root@localhost ~]# num1=6
[root@localhost ~]# num2=10
[root@localhost ~]# cat -n /etc/passwd|sed -n "${num1},${num2}p"
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
9 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
10 operator:x:11:0:operator:/root:/sbin/nologin
单引号
[root@localhost ~]# cat -n /etc/passwd|sed -n ''$num1,$num2'p'
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
9 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
10 operator:x:11:0:operator:/root:/sbin/nologin
这篇总结的很全面:https://www.cnblogs.com/276815076/p/5237886.html