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;”)。

相关内容