Sto cercando di capire come posso usare AWK per sottrarre linee. Ad esempio, immagina che il file di input sia:
30
20
L'output sarebbe:
10
Ora, come test, sto provando a calcolare la colonna di memoria "Usato" da:
$ cat /proc/meminfo
Quindi al momento ho scritto questo:
$ grep -P 'MemTotal|MemFree' /proc/meminfo | \
-- Here comes the calculation using AWK
Ho provato quanto segue:
$ grep -P 'MemTotal|MemFree' /proc/meminfo | \
awk '{print $2}' | awk '{$0-s}{s=$0} END {print s}'
Ma questo mi dà solo l'ultima riga di dati.
Ho trovato una soluzione funzionante, ma dubito che sia la migliore. Tutta la mia esperienza di programmazione mi dice che codificare con difficoltà la quantità di righe è terribile: 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
? Vuoi sottrarre solo le prime due righe consecutive?