过滤 df 输出中的内容

过滤 df 输出中的内容

我有以下命令来获取服务器上的文件系统使用情况:

df -k | awk '{print $5 " " $6}' | grep %

执行后,结果如下:

97% /
0% /proc
0% /etc/mnttab
0% /dev/fd
46% /var
1% /var/run
1% /tmp
54% /opt/app/oracle
22% /opt/app/proviso

我的问题是如何使包含的行97% /消失?

答案1

您可以使用以下命令进行过滤和修剪awk

df -k | awk '/%/ && NR > 2 {print $5 " " $6}'

/%/与 做同样的工作grep %

NR > 2过滤掉标签和/线条。

答案2

您可以用 tail 删除第一行:

df -k | awk '{print $5 " " $6}' | grep % | tail --lines +2

+2表示您要打印从第 2 行开始的所有行。

答案3

你会没事的,直到df你返回这样的东西:

Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/rootvg-lv_root
                  367G  246G  103G  71% /
tmpfs                  48G     0   48G   0% /dev/shm

这显然会破坏你的脚本/命令。所以我建议你始终将-P键应用于df脚本中的命令
关于你最初的问题,我会用简单的正则表达式来做到这一点

df -Ph  |awk '{if($6 ~ /^\/.+/) print $5, $6}'

相关内容