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 编写的),其中该运算符被忽略。