comparación de awk en Ubuntu

comparación de awk en Ubuntu

Estoy intentando escribir un script que verifique el uso del disco de clientes remotos. Hay un filtro en el script para obtener resultados significativos:

...

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

...

Esta línea de comando se ejecuta correctamente en máquinas CentOS/RHEL pero hay un error sobre el comando awk en Ubuntu, como se muestra a continuación:

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

¿Cómo puedo hacer una comparación en awk en Ubuntu? Operadores como "-gt, -ge..." tampoco funcionan.

Respuesta1

La comparación está bien, el problema es que te falta la variable con la que comparar. Debido a que toda su línea de comando SSH está entre comillas dobles, $5su shell local la come incluso antes de que llegue a 'ssh'; debe escribirla para \$5evitar eso. Lo mismo ocurre con este $0último (observe cómo el mensaje de error dice "print bash;" en su lugar).

información relacionada