正则系列——sed

 微信扫描下方二维码关注公众号带你玩转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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gqren003

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值