Awk
在 AIX 上使用“df”命令查看磁碟消耗資訊
我正在嘗試獲取佔用大量空間的 fs。我正在嘗試使用
df
帶有-g
標誌的命令(千兆字節視圖)來執行此操作,但我無法獲得我的預期值。df -g | sed 's/%//g'| awk '+$5>=75 {print}' | head -10
使用下面的這個命令,我得到了一個錯誤:
df -g | sed 's/%//g'| awk '{print $5>=75}' | head -4
錯誤資訊:
Syntax Error The source line is 1. The error context is {print >>> $5>= <<< awk: 0602-502 The statement cannot be correctly parsed. The source line is 1.
這是 AIX 上 df -g 命令的輸出:
/tmp>df -g | sed 's/%//g'| awk '$5 >= 75 { print }' | head -4 Filesystem GB blocks Free Used Iused Iused Mounted on /dev/hd4 10.50 10.05 5 16492 1 / /dev/hd2 25.50 18.15 29 64361 2 /usr /dev/hd9var 2.50 0.72 72 4521 3 /var
完整視圖:
Filesystem GB blocks Free %Used Iused %Iused Mounted on /dev/hd4 10.50 10.05 5% 16492 1% / /dev/hd2 25.50 18.15 29% 64357 2% /usr /dev/hd9var 2.50 1.39 45% 4512 2% /var /dev/hd3 21.50 20.24 6% 1495 1% /tmp
我在 AIX 7.1 PowerPC_POWER8 上試過。我不知道我做錯了什麼!
而不是使用
tr
andawk
兩次,只需使用 awk 一次:df -g | awk '{ sub("%", "", $4); if ($4 >= 75) { print $4, $7 }}' | sort -n
這將欄位 4 中的百分號替換為空字元串(剝離它們);如果剩餘值至少為 75,則列印欄位 4 和 7,然後通過管道將它們排序。
基於記住Stéphane 的答案之一的改進:
df -g | awk '$4+0 >= 75 { print $4, $7 }' | sort -n
“+0”加法強制進行數值比較,而不是嚴格基於字元串的比較。
如果要保留標題,請將條件更改為:
df -g | awk 'NR < 2 || $4+0 >= 75 { print $4, $7 }' | sort -n