Я пытаюсь понять, как я могу использовать AWK для вычитания линий. Например, представьте, что входной файл:
30
20
Выход будет:
10
Теперь, в качестве теста, я пытаюсь вычислить столбец памяти «Используется» из:
$ cat /proc/meminfo
Итак, на данный момент я написал это:
$ grep -P 'MemTotal|MemFree' /proc/meminfo | \
-- Here comes the calculation using AWK
Я пробовал следующее:
$ grep -P 'MemTotal|MemFree' /proc/meminfo | \
awk '{print $2}' | awk '{$0-s}{s=$0} END {print s}'
Но это только дает мне последний ряд данных.
Я нашел рабочее решение, но сомневаюсь, что оно самое оптимальное. Весь мой опыт программирования говорит мне, что жесткое кодирование количества строк ужасно: 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
? Вы хотите только вычесть первые два последовательных ряда?