Я намагаюся розібратися, як я можу використовувати 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
? Ви хочете лише відняти перші два послідовних рядки?