剪切/grep df -h

Lua*_*ham 2 linux disk-usage text-processing columns

如何获得“Avail”列下的挂载点“3.1T”(使用grep或cut)?

Filesystem                            Size  Used Avail Use% Mounted on

vstorage://cluster07                  4.0T  907G  3.1T  23% /vstorage/cluster07
Run Code Online (Sandbox Code Playgroud)

小智 6

awk

awk '{print $4}'
3.1T  

 echo vstorage://cluster07                  4.0T  907G  3.1T  23% /vstorage/cluster07 | awk '{print $4}'
Run Code Online (Sandbox Code Playgroud)

或者 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
Run Code Online (Sandbox Code Playgroud)

cut

cut -d" " -f4
 3.1T  

 echo vstorage://cluster07                  4.0T  907G  3.1T  23% /vstorage/cluster07 | cut -d" " -f4
Run Code Online (Sandbox Code Playgroud)

请注意,实际上,您需要将表格转换为固定宽度的表格,然后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
Run Code Online (Sandbox Code Playgroud)

  • 第三个示例(`grep`)仅适用于硬编码值。我不相信 OP 想要那个。而且,如果我们要使用硬编码值,`grep -o 3.1T` 就足够了。 (2认同)

pLu*_*umo 6

告诉df输出什么:

df -h --output=avail | tail -n1
Run Code Online (Sandbox Code Playgroud)

注意:这可能无法移植到所有 *nixes。