Linux三剑客之sed

Linux三剑客之sed

sed是Linux中,流媒体编辑器

类型:grep    过滤文本

           sed     修改文件

           awk     处理文本

         1、sed的格式

              sed 【参数】 '处理规则' 【操作对象】

              参数:-e:允许多项编辑

                         -n:取消默认输出

                          -i :就地编辑

                          -r :支持拓展正则

                          -f  :指定sed匹配规则脚本文件

 1 sed -e '3d' -e '6d' 4.txt 
 2 
 3 123
 4 123
 5 123
 6 123
 7 124
 8 123
 9 123
10 124
11 789
12 
13 123
14 123
15 123
16 124
17 123
18 124
19 789
示范

           2、定位

              1.数字定位法

                  指定行号

1 sed '3d' 4.txt
2 修改第三列
3 
4 sed'2,3d' 4.txt
5 修改第二第三列
示范

              2.正则定位法

                 指定正则定位

1 sed '/^g/d' 2.txt
2 修改以g开头列
示范

              3.数字和正则定位法  

1 sed '3,/^g/d' 2.txt
2 修改数字3和抬头是g
示范

              4.正则正则定位法

1 sed '/^g/,/^j/d' 2.txt
2 修改以g开头和j开头的
正则正则定位法

           3、sed的编辑模式

                参数:d:删除

                           p:打印

                           a:在当前行后添加一行或多行                             

sed '2axxx' 文件名

                           c:用新文本修改(替换)当前行

sed '2cxxx' 文件名

                            i : 在当前行之前,插入文本(单独使用时)

sed '2ixxx' 文件名

                             r : 在文件中读内容

sed '2r r.txt' 文件名 
读取带有r的字段

                             w : 将指定行写入文件

sed '2w w.txt' 2.txt

                             y : 将字符转换成另一个字符

sed '2y/fa/FA/' 2.txt 

                             s : 将字符串转换成另一个字符串(每一行只替换一次)

sed 's/11/22/' 6.txt 

                              g : 全部执行

sed 's/11/22/g' 6.txt

                              i : 忽略大小写(跟 s 模式一起使用时)

sed 's/F/f/ig' 文件名    

                             &:代表前面匹配到的内容

sed 's/.*/# &/g' /etc/nginx/nginx.conf

小案例:

 1 1、将nginx.conf中的注释行全部去掉
 2 
 3     [root@localhost ~]# sed '/^ *#/d' /etc/nginx/nginx.conf
 4 
 5 2、将nginx.conf中每一行之前增加注释
 6     [root@localhost ~]# sed 's/.*/# &/g' /etc/nginx/nginx.conf
 7 
 8 3、要求一键修改本机的ip,
 9     192.168.15.100 ---> 192.168.15.101
10     172.16.1.100   ---> 172.16.1.101
11     sed -i 's#.100#.101#g' /etc/sysconfig/network-scripts/ifcfg-eth[01]
12     
13 4、将/etc/passwd中的root修改成ROOT
14     sed -i 's#root#ROOT#g' /etc/passwd
小案例

 

posted @ 2021-12-21 17:40  Roseblacko  阅读(33)  评论(0编辑  收藏  举报