Ubuntu 上的 awk 比較

Ubuntu 上的 awk 比較

我正在嘗試編寫一個腳本來檢查遠端客戶端的磁碟使用情況。腳本中有一個過濾器用於有意義的輸出:

...

ssh server "sudo df -Ph 2>/dev/null \
| tail -n +2 \
| grep -v tmpfs \
| grep G| sed s/%//g \
| sed s/G//g \
| awk '{ if($5 < 20) print $0;}'" #to get only disks that the usage is under %20

...

該命令列在 CentOS/RHEL 機器上運行成功,但在 Ubuntu 中 awk 命令出現錯誤,如下所示:

awk: cmd. line:1: { if( < 20) print bash;}
awk: cmd. line:1:       ^ syntax error

如何在 Ubuntu 中使用 awk 進行比較?像「-gt、-ge...」這樣的運算子也不起作用。

答案1

比較很好,問題是您缺少要比較的變數。因為你的整個 SSH 命令列都在雙引號內,所以$5在它到達“ssh”之前就被你的本地 shell 吃掉了——你必須輸入它以\$5避免這種情況。後者也是如此$0(請注意錯誤訊息如何在其位置顯示“print bash;”)。

相關內容