Próbuję wymyślić, jak mogę użyć AWK do odejmowania linii. Na przykład wyobraź sobie, że plik wejściowy to:
30
20
Dane wyjściowe będą:
10
Teraz jako test próbuję obliczyć kolumnę pamięci „Używane” z:
$ cat /proc/meminfo
W tej chwili napisałem to:
$ grep -P 'MemTotal|MemFree' /proc/meminfo | \
-- Here comes the calculation using AWK
Próbowałem następujące:
$ grep -P 'MemTotal|MemFree' /proc/meminfo | \
awk '{print $2}' | awk '{$0-s}{s=$0} END {print s}'
Ale to daje mi tylko ostatni wiersz danych.
Znalazłem działające rozwiązanie, ale wątpię, aby było najbardziej optymalne. Całe moje doświadczenie w kodowaniu mówi mi, że twarde kodowanie liczby wierszy jest okropne: 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? Czy chcesz tylko odjąć pierwsze dwa kolejne wiersze?