只显示 fs 使用率超过 80% 的 df 行

Lan*_*nes 8 awk disk-usage

root@SERVER ~$ df
Filesystem  512-blocks  Free    %Used   Iused   %Iused  Mounted on
/dev/YXCV   655360      365632  45% 6322    13% /
/dev/ASDF   3801088     670648  83% 41759   32% /usr
/dev/ASR    1048576     500496  53% 5555    9%  /var
Run Code Online (Sandbox Code Playgroud)

如何将df命令的输出通过管道传输到仅显示使用率超过 80% 的行?

例如:它只会显示:

/dev/ASDF   3801088     670648  83% 41759   32% /usr
Run Code Online (Sandbox Code Playgroud)

Gil*_*il' 21

假设您没有包含空格的设备名称(这在解析 的输出时很痛苦df):

df -P | awk '0+$5 >= 80 {print}'
Run Code Online (Sandbox Code Playgroud)

如果要使用实现的df输出格式而不是 POSIX 格式,请调整字段编号。

没有0+,比较将是词法的(9%然后将大于80)。通过使用+二元算术运算符,我们强制$5转换为数字(因此9%变为9)并且比较为数字。使用+ 一元运算符(如awk '+$5 >= 80')在某些awk实现中有效,但不适用于传统的(由 A、W 和 K 编写的),其中该运算符被忽略。