Unix
為什麼我的 awk 子命令失敗?
當我跑
df -hl | grep '/dev/disk1' | awk '{sub(/%/, \"\");print $5}'
我收到以下錯誤:
awk: syntax error at source line 1 context is {sub(/%/, >>> \ <<< "\");} awk: illegal statement at source line 1
我似乎在 awk sub 上找不到任何文件。
df -hl | grep '/dev/disk1'
返回
/dev/disk1 112Gi 94Gi 18Gi 85% 24672655 4649071 84% /
據我了解,它應該返回已用磁碟空間的百分比。
您只需要刪除這對反斜杠:
df -hl | grep '/dev/disk1' | awk '{sub(/%/, "");print $5}'
awk
sub
函式有據可查,可以將作為第一個參數傳遞的模式的第一次出現替換為作為第二個參數傳遞的字元串。這裡的模式是百分號,替換字元串是一個空字元串。正如您在問題中所寫的那樣,第二個參數是無效字元串,因此會
awk
抱怨並退出。更正的awk
語句是刪除%
其輸入中的出現並顯示第五個欄位。請注意,
grep
這裡的命令是多餘的,因為awk
能夠單獨進行過濾,所以命令可以簡化為:df -hl | awk '/\/dev\/disk1/ {sub(/%/, "");print $5}'