sed命令的功能是处理文本字符。这里以文件/etc/passwd为例进行实例演示,具体功能如下:
1 显示某行的字符
显示第3行的字符内容,command:
nl /etc/passwd|sed -n '3p'
result:
3 bin:x:2:2:bin:/bin:/usr/sbin/nologin
打印命令如果不加参数-n,则会打印所有行。
2 添加字符
在文件第2行后面添加字符,command:
nl /etc/passwd|sed '2a wp'
result:
1 root:x:0:0:root:/root:/bin/bash
2 daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
wp
3 bin:x:2:2:bin:/bin:/usr/sbin/nologin
4 sys:x:3:3:sys:/dev:/usr/sbin/nologin
5 sync:x:4:65534:sync:/bin:/bin/sync
6 games:x:5:60:games:/usr/games:/usr/sbin/nologin
7 man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
8 lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
9 mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
10 news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
3 删除字符
删除文件第3行,command:
nl /etc/passwd|sed '3d'
result:
1 root:x:0:0:root:/root:/bin/bash
2 daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
4 sys:x:3:3:sys:/dev:/usr/sbin/nologin
5 sync:x:4:65534:sync:/bin:/bin/sync
6 games:x:5:60:games:/usr/games:/usr/sbin/nologin
7 man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
8 lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
9 mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
10 news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
删除文件第3行到最后行的内容,command:
nl /etc/passwd|sed '3,$d'
result:
1 root:x:0:0:root:/root:/bin/bash
2 daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
4 替换相应行
将第2行的内容替换为某字符:
nl /etc/passwd|sed '2c wp'
result:
1 root:x:0:0:root:/root:/bin/bash
wp
3 bin:x:2:2:bin:/bin:/usr/sbin/nologin
4 sys:x:3:3:sys:/dev:/usr/sbin/nologin
5 sync:x:4:65534:sync:/bin:/bin/sync
6 games:x:5:60:games:/usr/games:/usr/sbin/nologin
7 man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
8 lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
9 mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
10 news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
5 查找匹配字符的行|打印显示
显示含有root的行,command:
nl /etc/passwd|sed -n '/root/p'
result:
1 root:x:0:0:root:/root:/bin/bash
如果不用参数-n,则会先打印第一行,然后打印所有行。
6 替换字符
将字符bash替换为bashshell,command:
nl /etc/passwd|sed 's/root/ROOT/g'|sed '/ROOT/p' -n
result:
1 ROOT:x:0:0:ROOT:/ROOT:/bin/bash