Estou tentando descobrir como posso usar o AWK para subtrair linhas. Por exemplo, imagine que o arquivo de entrada seja:
30
20
A saída seria:
10
Agora, como teste, estou tentando calcular a coluna de memória "Usado" em:
$ cat /proc/meminfo
Então, no momento eu escrevi isso:
$ grep -P 'MemTotal|MemFree' /proc/meminfo | \
-- Here comes the calculation using AWK
Eu tentei o seguinte:
$ grep -P 'MemTotal|MemFree' /proc/meminfo | \
awk '{print $2}' | awk '{$0-s}{s=$0} END {print s}'
Mas isso me dá a última linha de dados.
Encontrei uma solução funcional, mas duvido que seja a mais ideal. Toda a minha experiência em codificação me diz que a codificação embutida da quantidade de linhas é terrível: 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
? Deseja apenas subtrair as duas primeiras linhas consecutivas?