我正在做:
$> df -kh | sed -n '/\/data\/WAS\/7.0\/wasap03/p'
/dev/xxxxx/xxxxx 5.0G 490M 4.2G 11% /data/WAS/7.0/wasap03
/dev/xxxxx/xxxxxxx 3.5G 72M 3.3G 3% /data/WAS/7.0/wasap03/xxxx/xxxx
/dev/xxxxxx/xxxxxxxxxx 3.5G 72M 3.3G 3% /data/WAS/7.0/wasap03/xxxx/xxxx/xxxx
$> df -kh | sed -n '/\/data\/WAS\/7.0\/wasap03/p' | awk {'print $5, $6'}
11% /data/WAS/7.0/wasap03
3% /data/WAS/7.0/wasap03/xxxxx/xxxxx
3% /data/WAS/7.0/wasap03/xxxxx/xxxx/xxxxx
我的问题是我只需要整行只包含/data/WAS/7.0/wasap03
,即输出应仅为 - > 11% /data/WAS/7.0/wasap03
,仅此而已。请不要说使用head -1
,我只需通过sed。
答案 0 :(得分:1)
如果你想匹配行尾:
df -kh | sed -n '\@/data/WAS/7.0/wasap03$@p'
使用awk(这样你就可以避免使用awk来获取字段5和6:
df -kh | awk 'match($0,"/data/WAS/7.0/wasap03$"){print $5, $6}'
答案 1 :(得分:0)
您可以使用以下sed命令仅打印第一个匹配项
$ df -kh | sed -n '0,/\/data\/WAS\/7.0\/wasap03/p'
/dev/xxxxx/xxxxx 5.0G 490M 4.2G 11% /data/WAS/7.0/wasap03
通过awk,
$ df -kh | awk '/\/data\/WAS\/7.0\/wasap03/{print;exit}'
/dev/xxxxx/xxxxx 5.0G 490M 4.2G 11% /data/WAS/7.0/wasap03
$ df -kh | awk '/\/data\/WAS\/7.0\/wasap03/{print $5,$6;exit}'
11% /data/WAS/7.0/wasap03
答案 2 :(得分:0)
df -kh | sed -n '/\/data\/WAS\/7.0\/wasap03/ {s/.*[[:space:]]\([0-9]*%\)/\1/p;q;}'
11% /data/WAS/7.0/wasap03
我建议使用awk,因为我假设%
在awk使用字段的行中是单独的(路径中有空格的同类问题,但你可以假设不是由于你的过滤器)