我试图弄清楚如何使用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
吗?您是否只想减去前两行?