linux:三剑客老二sed

我们知道,vim 采用的是交互式文本编辑模式,你可以用键盘命令来交互性地插入、删除或替换数据中的文本。但 sed 命令却不同,它采用的是流编辑模式,最明显的特点是,在 sed 处理数据之前,需要预先提供一组规则,sed 会按照此规则来编辑数据
大致规则如下:
1、每次仅读取一行内容
2、根据提供的规则命令匹配并修改数据。注意,sed 默认不会直接修改源文件数据,而是会将数据复制到模式空间中,修改也仅限于模式空间中的数据
3、将执行结果输出,当一行数据匹配完成后,它会继续读取下一行数据,并重复这个过程,直到将文件中所有数据处理完毕
在这里插入图片描述

选项作用
- n取消默认输出
- i直接修改文件内容,而不是输出到终端
- e允许多项
- r支持扩展正则

sed 特有子命令

选项作用
s替换
g全局
p打印
d删除
a追加,多少行后
i插入,多少行后
c取代
取反

示例:
1、把网卡信息中ip取出

[root@yu zy]# ip a s ens33
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:0b:67:f6 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.200/24 brd 10.0.0.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::ae63:3bd2:b1a7:f2aa/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
[root@yu zy]# ip a s ens33 | sed -rn '3s#^.*inet (.*)/24 .*$#\1#gp'
10.0.0.200

2、删除指定行信息

[root@yu zy]# cat 123.txt 
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
2222222
BOOTPROTO=none
[root@yu zy]# sed '2d' 123.txt 
TYPE=Ethernet
BROWSER_ONLY=no
2222222
BOOTPROTO=none

3、追加和插入

[root@yu zy]# cat 123.txt 
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
2222222
BOOTPROTO=none
[root@yu zy]# sed '2a 2222' 123.txt 
TYPE=Ethernet
PROXY_METHOD=none
2222
BROWSER_ONLY=no
2222222
BOOTPROTO=none
[root@yu zy]# sed '2i 2222' 123.txt 
TYPE=Ethernet
2222
PROXY_METHOD=none
BROWSER_ONLY=no
2222222
BOOTPROTO=none
[root@yu zy]# sed '2c 123123123' 123.txt 
TYPE=Ethernet
123123123
BROWSER_ONLY=no
2222222
BOOTPROTO=none
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值