第三周作业(4月6日)

本文通过示例详细介绍了如何使用sed命令从df-h和free-h命令的输出中提取特定数据。总结了sed匹配逻辑是从行尾开始,从右到左的顺序,并展示了如何调整正则表达式以正确提取所需信息。内容涵盖了sed命令在处理行尾匹配和从左到右顺序匹配时的用法差异。
摘要由CSDN通过智能技术生成

1、用sed取出df -h显示出的/dev开头的已用磁盘的数据,带单位。如红框内容为所提取数据

例图

[root@centos8 ~]#df -h|sed -rn '/^\/dev\/sd/s@.* (.*[MG]) .*[MG].*@\1@p'
2.4G
390M
169M
[root@centos8 ~]#df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        957M     0  957M   0% /dev
tmpfs           975M     0  975M   0% /dev/shm
tmpfs           975M   49M  927M   5% /run
tmpfs           975M     0  975M   0% /sys/fs/cgroup
/dev/sda2       100G  2.4G   98G   3% /
/dev/sda3        50G  390M   50G   1% /data
/dev/sda1      1014M  169M  846M  17% /boot
/dev/sr0        8.7G  8.7G     0 100% /mnt
tmpfs           195M     0  195M   0% /run/user/0

2、用sed取出free -h 剩余空间内容,不带单位(假定单位都是Gi),如下图红框中的内容 为 所提取的内容

在这里插入图片描述

[root@centos8 ~]#free -h |sed -nr -e '2s#.* (.*[MG]i) .*[MG]i.*[MG]i.*[MG]i$#\1#p' -e '3s#.* (.*[MG]i)$#\1#p'
1.1Gi
4.0Gi

总结:sed 字符匹配逻辑是从行尾开始,从右到左的顺序。

发现sed计算字符的时候从$符开始计算,如:在free -h题中,如果想从左到右的顺序来匹配想要的打印结果,按照这种逻辑代码是这么写的,

[root@centos8 ~]#free -h |sed -nr -e '2s#.*: .*[MG]i.*[MG]i (.*[MG]i) .*$#\1#p' -e '3s#.* (.*[MG]i)$#\1#p'
      503Mi
4.0Gi

但是打印结果不是想要的,所以sed 匹配顺序是行尾开始,从右到左的顺。
例如打印第3行的时候,可以利用这个逻辑,直接写一个[MG]i即可。甚至不用告诉sed位置在$,或者直接加任意字符 .*
按照这个逻辑第1题也就好理解了。

[root@centos8 ~]#free -h |sed -nr -e '2s#.*: .*[MG]i.*[MG]i (.*[MG]i) .*$#\1#p' -e '3s#.* (.*[MG]i)$#\1#p'
      503Mi
4.0Gi
[root@centos8 ~]#free -h |sed -nr -e '2s#.*: .*[MG]i.*[MG]i (.*[MG]i) .*$#\1#p' -e '3s#.* (.*[MG]i)#\1#p'
      503Mi
4.0Gi
[root@centos8 ~]#free -h |sed -nr -e '2s#.*: .*[MG]i.*[MG]i (.*[MG]i) .*$#\1#p' -e '3s#.* (.*[MG]i).*#\1#p'
      503Mi
4.0Gi
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值