给定从命令获得的以下子字符串df /dev/sdb1 | tail -n 1
:
/dev/sdb1 1952971772 1441131032 511840740 74% /media/kaiman/ShareData
我想从该字符串中提取1952971772
并74%
用于 bash 脚本中。
我知道我可以使用一些剪切命令或者其他命令,但是如果尺寸发生变化,它将不再起作用。
我也想过使用正则表达式或者其他什么东西,但我想要最推荐的方法。
提前致谢!
答案1
编辑答案
正如 @kevin 所述,您可以使用它awk
来仅选择最后一行,并完全避免使用尾部END
,如果您想一次打印两列,您可以这样做:
df /dev/sdb1 | awk 'END {print $2,$5}'
1952971772 74%
原始答案
您只能选择第二列:
$ df /dev/sdb1 | tail -1 | awk '{print $2}'
1952971772
其中$2
表示 TAB 分隔列的位置。您可以使用它,cut
因为它只能处理一次 TAB 出现,而这里有多个 TAB 来分隔一列。
答案2
$ df /dev/sdb1 | awk '{ print $5 }' | tail -n 1
百分比和
$ df /dev/sdb1 | awk '{ print $2 }' | tail -n 1
尺寸。
没有tail
:
df /home | awk 'NR==2 { print $2 }'
df /home | awk 'NR==2 { print $5 }'
awk '{ print $2 }'
获取第 2 列,其中多个分隔符计为 1。因此,对于您的系统,对于命令的第 1 部分,第 2 列始终是相同的。NR
给出正在处理的记录总数或行号。