技术改变生活

博客园 首页 新随笔 联系 订阅 管理
 1 [root@localhost sed]# sed -r  '/^adm/{h;d};$G' passwd
 2 root:x:0:0:root:/root:/bin/bash
 3 bin:x:1:1:bin:/bin:/sbin/nologin
 4 daemon:x:2:2:daemon:/sbin:/sbin/nologin
 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 root:x:3:9:root:/xoot:/sbin/bash
10 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
11 operator:x:11:0:operator:/root:/sbin/nologin
12 adm:x:3:4:adm:/var/adm:/sbin/nologin
13 [root@localhost sed]# 
 1 [root@localhost sed]# sed -r  '/^adm/h;/^adm/d;$G' passwd
 2 root:x:0:0:root:/root:/bin/bash
 3 bin:x:1:1:bin:/bin:/sbin/nologin
 4 daemon:x:2:2:daemon:/sbin:/sbin/nologin
 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 root:x:3:9:root:/xoot:/sbin/bash
10 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
11 operator:x:11:0:operator:/root:/sbin/nologin
12 adm:x:3:4:adm:/var/adm:/sbin/nologin
13 [root@localhost sed]# 

两者写法等价

思想: 

sed -r  '/^adm/{h;d};$G' passwd 语句中的{}表示,对一行语句同时执行多个命令;h表示将模式空间的内容放到暂存空间中(覆盖暂存空间默认的回车符),H表示
将模式空间的内容追加到暂存空间;G表示将暂存空间的内容追加到模式空间,g表示将暂存空间的内容放到模式空间中(覆盖模式空间原有的内容);

 1 [root@localhost sed]# sed '1{h;d};2,5H;$G' passwd
 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 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 root:x:3:9:root:/xoot:/sbin/bash
10 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
11 operator:x:11:0:operator:/root:/sbin/nologin
12 root:x:0:0:root:/root:/bin/bash
13 bin:x:1:1:bin:/bin:/sbin/nologin
14 daemon:x:2:2:daemon:/sbin:/sbin/nologin
15 adm:x:3:4:adm:/var/adm:/sbin/nologin
16 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
17 [root@localhost sed]# 
 1 [root@localhost sed]# cat passwd
 2 root:x:0:0:root:/root:/bin/bash
 3 bin:x:1:1:bin:/bin:/sbin/nologin
 4 daemon:x:2:2:daemon:/sbin:/sbin/nologin
 5 adm:x:3:4:adm:/var/adm:/sbin/nologin
 6 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
 7 sync:x:5:0:sync:/sbin:/bin/sync
 8 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
 9 halt:x:7:0:halt:/sbin:/sbin/halt
10 root:x:3:9:root:/xoot:/sbin/bash
11 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
12 operator:x:11:0:operator:/root:/sbin/nologin
13 [root@localhost sed]# 
 1 [root@localhost sed]# sed '1{h;d};3x;$G' passwd
 2 bin:x:1:1:bin:/bin:/sbin/nologin
 3 root:x:0:0:root:/root:/bin/bash
 4 adm:x:3:4:adm:/var/adm:/sbin/nologin
 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 root:x:3:9:root:/xoot:/sbin/bash
10 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
11 operator:x:11:0:operator:/root:/sbin/nologin
12 daemon:x:2:2:daemon:/sbin:/sbin/nologin
13 [root@localhost sed]# 
sed '1{h;d};3x;$G' passwd 语句中的3x表示第三行的模式空间和暂存空间的内容互换。

 1 [root@localhost sed]# sed '1,5{H;d};$G' passwd
 2 sync:x:5:0:sync:/sbin:/bin/sync
 3 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
 4 halt:x:7:0:halt:/sbin:/sbin/halt
 5 root:x:3:9:root:/xoot:/sbin/bash
 6 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
 7 operator:x:11:0:operator:/root:/sbin/nologin
 8 
 9 root:x:0:0:root:/root:/bin/bash
10 bin:x:1:1:bin:/bin:/sbin/nologin
11 daemon:x:2:2:daemon:/sbin:/sbin/nologin
12 adm:x:3:4:adm:/var/adm:/sbin/nologin
13 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
14 [root@localhost sed]# sed '1{h;d};2,5{H;d};$G' passwd
15 sync:x:5:0:sync:/sbin:/bin/sync
16 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
17 halt:x:7:0:halt:/sbin:/sbin/halt
18 root:x:3:9:root:/xoot:/sbin/bash
19 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
20 operator:x:11:0:operator:/root:/sbin/nologin
21 root:x:0:0:root:/root:/bin/bash
22 bin:x:1:1:bin:/bin:/sbin/nologin
23 daemon:x:2:2:daemon:/sbin:/sbin/nologin
24 adm:x:3:4:adm:/var/adm:/sbin/nologin
25 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
26 [root@localhost sed]# 
 1 [root@localhost sed]# sed 'g' passwd
 2 
 3 
 4 
 5 
 6 
 7 
 8 
 9 
10 
11 
12 
13 [root@localhost sed]# sed 'g' passwd|wc -l
14 11

 

特点:sed的暂存空间默认的内容为回车符,固直接追加,会出现多出一个空行。

 1 [root@localhost sed]# sed '/adm/{n;n;s/sync/ppp/g}' passwd
 2 root:x:0:0:root:/root:/bin/bash
 3 bin:x:1:1:bin:/bin:/sbin/nologin
 4 daemon:x:2:2:daemon:/sbin:/sbin/nologin
 5 adm:x:3:4:adm:/var/adm:/sbin/nologin
 6 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
 7 ppp:x:5:0:ppp:/sbin:/bin/ppp
 8 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
 9 halt:x:7:0:halt:/sbin:/sbin/halt
10 root:x:3:9:root:/xoot:/sbin/bash
11 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
12 operator:x:11:0:operator:/root:/sbin/nologin
13 [root@localhost sed]# 
 1 [root@localhost sed]# sed '1h;2,$g' passwd
 2 root:x:0:0:root:/root:/bin/bash
 3 root:x:0:0:root:/root:/bin/bash
 4 root:x:0:0:root:/root:/bin/bash
 5 root:x:0:0:root:/root:/bin/bash
 6 root:x:0:0:root:/root:/bin/bash
 7 root:x:0:0:root:/root:/bin/bash
 8 root:x:0:0:root:/root:/bin/bash
 9 root:x:0:0:root:/root:/bin/bash
10 root:x:0:0:root:/root:/bin/bash
11 root:x:0:0:root:/root:/bin/bash
12 root:x:0:0:root:/root:/bin/bash
13 [root@localhost sed]# 

 

[root@x112 etc]# sed -nr '/^<IfModule dir_module>/p' /usr/local/apache/conf/httpd.conf
<IfModule dir_module>

#在<IfModule dir_module>内容下一行末尾,添加index.php信息

[root@x112 etc]# sed -rn '/^<IfModule dir_module>/{n;s/$/index.php/p}' /usr/local/apache/conf/httpd.conf
DirectoryIndex index.html index.php

[root@x112 etc]# sed -ri '/^<IfModule dir_module>/{n;s/$/index.php/}' /usr/local/apache/conf/httpd.conf
DirectoryIndex index.html index.php

posted on 2020-09-07 20:08  小阿峰  阅读(448)  评论(0编辑  收藏  举报