微信扫描下方二维码关注公众号带你玩转Linux
1.增删改查之替换
1.1 后向引用格式
应用说明 :sed 命令中用于处理列的方式 .
使用格式:使用替换的形式 s###g前2个#号之间通过正则+(),进行分组。后面2个#号之间通过\数字,获取前面分组的内容。整体是后面调用前面分组的内容,称之为反向引用/后向引用。
- 基本使用
- 例子
1.2 案例01:调换/etc/passwd第一列和最后一列内容
cp /etc/passwd .
-
1.匹配第 1 组
(^.*):x
- 2.匹配第2组
(^.*)(:x.*:)
- 3. 匹配第3组
(^.*)(:X.*:)(.*$)
- 输出最后结果:
1.3 案例02:取出网卡ip地址
ip a s eth0 #取出第三行里面的ip地址
方法01
[root@Gq oldboy]# ip a s eth0 | sed -n '3p' |sed -r 's#^.*et ([0-9.]+)/.*$#\1#g'
10.0.0.200
方法02 进阶
sed -n '3p'
+
sed -r 's#^.*et ([0-9.]+)/.*$#\1#g'
-------------------------------
= sed -nr '3 s#^.*et ([0-9.]+)/.*$#\1#g p'
方法03 awk
[root@Gq oldboy]# ip a s eth0 | sed -n '3p'|awk '{print $2}' |sed 's#/24##g'
10.0.0.200
方法04 awk
[root@Gq oldboy]# ip a s eth0 | sed -n '3p'|awk -F "[ /]+" '{print $3}'
10.0.0.200
方法05-06 awk
ip a s eth0 | sed -n '3p' |awk -F "[ /]+" '{print $3}'
[root@Gq oldboy]# ip a s eth0 | awk -F "[ /]+" 'NR==3{print $3}'
10.0.0.200
方法07
hostname -I
1.4 案例03:取出stat /etc/hosts中的0644或644
[root@gq oldboy]# stat /etc/hosts |sed -n '4p' |sed -r 's#^.*\(([0-9]+)/.*$#\1#g'
0644
2. 增删改查之删除
- d sed命令删除功能按照行为单位进行。
- 如果仅仅删除某一行的一些字符推荐使用's###g'
[root@Gq oldboy]# cat sed.txt
101,oldboy,CED
102,bigbao,CTO
103,gq999,COO
104,yy,CFO
105,feixue,CIO
110,gq,COCO
[root@Gq oldboy]# sed '3d' sed.txt
101,oldboy,CEO
102,oldbao,CTO
104,yy,CFO
105,feixue,CIO
110,oldboy,COCO
- 排除/删除文件中的空行和带注释的行
egrep -v '^$|#' /etc/ssh/sshd_config
sed -r '/^$|#/d' /etc/ssh/sshd_config
awk '! /^$|#/' /etc/ssh/sshd_config
3. 增删改查之增加
- cai
- a append 在指定行后面追加内容
- i insert 在指定行上面插入一行
- c replace 替换指定行的内容
[root@Gq oldboy]#cat sed.txt
101,oldboy,CEO
102,oldbao,CTO
103,996,COO
104,yy,CFO
105,feixue,CIO
110,oldboy,COCO
[root@Gq oldboy]#sed '3a999,lidao007,UFO' sed.txt
101,oldboy,CEO
102,oldbao,CTO
103,996,COO
999,lidao007,UFO
104,yy,CFO
105,feixue,CIO
110,oldboy,COCO
[root@Gq oldboy]#sed '3i999,lidao007,UFO' sed.txt
101,oldboy,CEO
102,oldbao,CTO
999,lidao007,UFO
103,996,COO
104,yy,CFO
105,feixue,CIO
110,oldboy,COCO
[root@Gq oldboy]#sed '3c999,lidao007,UFO' sed.txt
101,oldboy,CEO
102,oldbao,CTO
999,lidao007,UFO
104,yy,CFO
105,feixue,CIO
110,oldboy,COCO