J'essaie de comprendre comment je peux utiliser AWK pour soustraire des lignes. Par exemple, imaginez que le fichier d'entrée est:
30
20
La sortie serait:
10
Maintenant, en tant que test, j'essaie de calculer la colonne de mémoire "utilisée" à partir de:
$ cat /proc/meminfo
Donc, pour le moment, j'ai écrit ceci:
$ grep -P 'MemTotal|MemFree' /proc/meminfo | \
-- Here comes the calculation using AWK
J'ai essayé ce qui suit:
$ grep -P 'MemTotal|MemFree' /proc/meminfo | \
awk '{print $2}' | awk '{$0-s}{s=$0} END {print s}'
Mais cela me donne juste la dernière ligne de données.
J'ai trouvé une solution qui fonctionne, mais je doute que ce soit la plus optimale. Toute mon expérience de codage me dit que le codage en dur de la quantité de lignes est 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
? Voulez-vous uniquement soustraire les deux premières lignes consécutives?