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