Awk

在 AIX 上使用“df”命令查看磁碟消耗資訊

  • August 24, 2018

我正在嘗試獲取佔用大量空間的 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 上試過。我不知道我做錯了什麼!

而不是使用trandawk兩次,只需使用 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

引用自:https://unix.stackexchange.com/questions/387954