sed小实践(随手记)

20 篇文章 0 订阅
15 篇文章 0 订阅

利用到的知识点

  • 正则表达式
  • 管道符
  • sed反向引用

需求1

/etc/passwd的第一行的头和尾字段调换显示

解法

  1. 原始内容
head -1 /etc/passwd
root:x:0:0:root:/root:/bin/bash
  1. 调换后
head -1 /etc/passwd | sed -r 's|(^root)(.*)(/bin/bash$)|\3\2\1|g'
/bin/bash:x:0:0:root:/root:root

需求2

/etc/passwd的行的头和尾字段调换显示

解法

  1. 原始内容
wc /etc/passwd
  34   69 1764 /etc/passwd
cat /etc/passwd | awk -F ':' '{print $2}' | uniq -c
     34 x
# 发现/etc/passwd的第二段都是x,所以第二段可以设置为:x开始,到:结束
  1. 调换后
[root@ecm ~]# head -5 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

[root@ecm ~]# head -5 /etc/passwd | sed -r 's#(^.*)(:x.*:)(.*$)#\3\2\1#g'
/bin/bash:x:0:0:root:/root:root
/sbin/nologin:x:1:1:bin:/bin:bin
/sbin/nologin:x:2:2:daemon:/sbin:daemon
/sbin/nologin:x:3:4:adm:/var/adm:adm
/sbin/nologin:x:4:7:lp:/var/spool/lpd:lp

需求3

获取网卡的ip地址,必须使用sed

解法

  1. 原始内容
ip a s eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether fa:16:3e:e9:95:58 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.124/24 brd 10.0.0.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::b791:7040:47e3:4e98/64 scope link noprefixroute
       valid_lft forever preferred_lft forever

# 仅需要第三行的10.0.0.124
  1. sed后
ip a s eth0 | sed -n '3p'| sed -r 's@^.*et (.*)/.*@\1@g'
10.0.0.124
#以下写法也可以,少了一个管道
ip a s eth0 | sed -nr '3 s@^.*et (.*)/.*@\1@g p'
10.0.0.124

需求4

使用sed获取stat /etc/passwd中的权限

解法

  1. 原始内容
istat /etc/passwd
  File: /etc/passwd
  Size: 1764            Blocks: 8          IO Block: 4096   regular file
Device: 253,1   Inode: 34068374    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2024-05-06 13:41:53.306830498 +0800
Modify: 2024-04-29 13:40:50.998782377 +0800
Change: 2024-04-29 13:40:50.999782397 +0800
 Birth: 2024-04-29 13:40:50.998782377 +0800

# 仅需要第4行的0644
  1. sed后
stat /etc/passwd | sed -rn '4 s|^.*\(([0-9]+)/.*$|\1|g p'
0644
  • 7
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值