剪切/grep df -h

剪切/grep df -h

如何获取“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。但这非常简单且有效。

相关内容