sed的使用

1 sed -n 只显示匹配处理的行(否则会输出所有)(也就是关闭默认的输出)

1.1 查找显示p

一般格式:sed -n ****

查找格式
‘2p’打印、显示第二行
‘1,5p’'4,$p’第四行到最后一行
‘/lcf/p’类似于grep过滤,//里面可以写正则
‘/10:00/,/11:00/p’表示范围的过滤
‘1,/lcf/p’混合查找

其中表示范围的时候 如果结尾的内容匹配不到就显示到最后。
需要用到正则表达式时要用sed -nr

!的 妙用 (取反)

sed -nr /^$|#/!p 3.txt 遇到#或空行不删除

2. sed

2.1 删除 行 d(删除字符需要用替换)

一般格式:sed *****

查找格式
‘2d’删除第二行
‘1,5d’‘4,$p’ 第四行到最后一行
‘/lcf/d’类似于grep过滤,//里面可以写正则
‘/10:00/,/11:00/d’表示范围的删除
‘1,/lcf/d’混合查找

2.2 增加 cai (只显示结果 不会覆盖)

命令
aappend追加 在指定行的后面追加内容
iinsert插入 在指定行的前面插入内容
creplace替代 替代这行
[root@foundation76 Desktop]# cat 2
Awelcome nowcoder2121
Awelcome to nowcoder121
Bnowcoder11255
###

[root@foundation76 Desktop]# sed '2a lcfnb' 2
Awelcome nowcoder2121
Awelcome to nowcoder121
lcfnb
Bnowcoder11255
###

[root@foundation76 Desktop]# sed '2i lccccccfnb' 2
Awelcome nowcoder2121
lccccccfnb
Awelcome to nowcoder121
Bnowcoder11255
###

[root@foundation76 Desktop]# sed '2c lccsssssssccccfnb' 2
Awelcome nowcoder2121
lccsssssssccccfnb
Bnowcoder11255
###

企业案例中若要在一些配置文件最后追加几行的数据则我们可以
1.

cat >> xxxx.conf << 'EOF'
> 123
> 1231
> 212
> EOF
sed '$a 123\n 1231\n 212' xxxx.conf

2.3 s替换

替换格式
s###g
s@@@g
[root@foundation76 Desktop]# sed 's#[0-9]##g' 2 #将数字替换成空 
Awelcome nowcoder
Awelcome to nowcoder
Bnowcoder
###

lcf

其中g为global全局替换 没有g的话只替换每行第一个匹配的内容

2.3.1 sed 的反向引用

口诀:先保护,在使用
意思是说前面部分#内用()阔起来 后面#用转译符号作修改

[root@foundation76 Desktop]# echo lcf_smy |sed -r 's#(.*)#<\1>#g' #添加<>
<lcf_smy>

[root@foundation76 Desktop]# echo lcf_smy | sed -r 's#(^\w+)_(\w+$)#\2_\1#g' #互换位置 
smy_lcf 
#其中\w代表 [0-9a-zA-Z]
# \2 代表后面的
# \1 代表前面的


[root@foundation76 Desktop]# ip addr show br0 |sed -n '3p'
    inet 172.25.254.76/24 brd 172.25.254.255 scope global noprefixroute br0
[root@foundation76 Desktop]# ip addr show br0 |sed -n '3p' | sed -r 's#^.*t (.*)/.*$#\1#g' #取ip
172.25.254.76
[root@foundation76 Desktop]# ip addr show br0 |sed -rn '3s#^.*t (.*)/.*$#\1#gp' #合并
172.25.254.76

#其中's#^.*t (.*)/.*$#\1#g'是
#^.*t 任意开头到t空格
#(.*) 保护好我们需要的
#/.*$ /开头任意到结束

[root@foundation76 Desktop]# stat /etc/hosts 
  File: /etc/hosts
  Size: 410       	Blocks: 8          IO Block: 4096   regular file
Device: 10307h/66311d	Inode: 167797011   Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2022-03-21 14:57:53.827785430 +0800
Modify: 2022-03-08 14:57:53.470149574 +0800
Change: 2022-03-08 14:57:53.479149531 +0800
 Birth: -

[root@foundation76 Desktop]# stat /etc/hosts |sed -nr '4s#^.*\(0(.*)/-.*#\1#gp'  #提权
644
#其中:
#^.*\(0(.*)/-.* 
#\(0 中的小括号需要用\转译符号消除特殊含义
[root@foundation76 Desktop]# stat /etc/hosts |grep -o 644 这样也行
644
[root@foundation76 Desktop]# stat -c%a /etc/hosts 
644

[root@foundation76 Desktop]# sed '=' 2 #在每行前一行插入行号
1
Awelcome nowcoder2121
2
Awelcome to nowcoder121
3
Bnowcoder11255
4
###
5

6
lcf
7
12
8
2
[root@foundation76 Desktop]# sed '=' 2 |sed  'N;s#\n# #g'    #显示行号 其中:N;是提前读取
1 Awelcome nowcoder2121
2 Awelcome to nowcoder121
3 Bnowcoder11255
4 ###
5 
6 lcf
7 12
8 2
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

lll_cf

喜欢

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

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

打赏作者

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

抵扣说明:

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

余额充值