我有以下命令来获取服务器上的文件系统使用情况:
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}'