如何获取“Avail”列下的挂载点“3.1T”(使用 grep 或 cut)?
Filesystem Size Used Avail Use% Mounted on
vstorage://cluster07 4.0T 907G 3.1T 23% /vstorage/cluster07
答案1
告诉df
输出什么:
df -h --output=avail | tail -n1
注意:这可能无法移植到所有 *nix。
答案2
使用awk
awk '{print $4}'
3.1T
echo vstorage://cluster07 4.0T 907G 3.1T 23% /vstorage/cluster07 | awk '{print $4}'
或者grep
grep -o '\b3.1T\b'
3.1T
echo vstorage://cluster07 4.0T 907G 3.1T 23% /vstorage/cluster07 | grep -o '\b3.1T\b'
\b in a regular expression means "word boundary".
-o, --only-matching
或者cut
:
cut -d" " -f4
3.1T
echo vstorage://cluster07 4.0T 907G 3.1T 23% /vstorage/cluster07 | cut -d" " -f4
请注意,实际上,您需要将表格转换为固定宽度表格,然后cut
按如下方式使用:
echo "vstorage://cluster07 4.0T 907G 3.1T 23% /vstorage/cluster07" | awk '{for(i=1;i<=NF;i++) { printf "%-5s",$i } ; printf("\n"); }' | cut -d" " -f3
3.1T
答案3
尝试下面的命令,
df -h | awk '/\/vstorage\/cluster07/ {print $4}'
答案4
和sed
:
df -h | sed -rn 's|[^ ]+ +([^ ]+) .*|\1|p'
或者,与grep
:
df -h | grep -Eo '[0-9]+%'
最后一个可能有点粗糙,因为它仅依赖于%
输出中的一个字符df -h
。但这非常简单且有效。