Estoy tratando de descubrir cómo puedo usar AWK para restar líneas. Por ejemplo, imagine que el archivo de entrada es:
30
20
El resultado sería:
10
Ahora, como prueba, intento calcular la columna de memoria "Usado" a partir de:
$ cat /proc/meminfo
Así que en este momento he escrito esto:
$ grep -P 'MemTotal|MemFree' /proc/meminfo | \
-- Here comes the calculation using AWK
He probado lo siguiente:
$ grep -P 'MemTotal|MemFree' /proc/meminfo | \
awk '{print $2}' | awk '{$0-s}{s=$0} END {print s}'
Pero esto solo me da la última fila de datos.
He encontrado una solución que funciona, pero dudo que sea la más óptima. Toda mi experiencia en codificación me dice que la codificación dura de la cantidad de filas es terrible: P
$ grep -P 'MemTotal|MemFree' /proc/meminfo | \
awk '{print $2}' | awk 'NR == 1{s=$0} NR == 2 {s=s-$0} END {print s}'
line1_$2 - line2_$2 - lineN-$2
? ¿Solo quieres restar las dos primeras filas consecutivas?