用于从文本文件中成对求和 2 个模式的 awk 命令

用于从文本文件中成对求和 2 个模式的 awk 命令

我在文本文件中从 zzz 行开始重复。

zzz ***Wed Aug 16 06:00:30 UTC 2017
MemTotal:       195702024 kB
MemFree:         1323524 kB
..
Cached:         58020288 kB
..other rows
zzz ***Wed Aug 16 06:01:00 UTC 2017
MemTotal:       195702024 kB
MemFree:         1379588 kB
..other rows
Cached:         58001952 kB
..other rows

我想总结一下价值观内存自由:缓存:对于每次重复。这样的线上有 3 列。 KB 是第三列。

例如:

MemFree:         1323524 kB + Cached:         58020288 kB = 59343812 
MemFree:         1379588 kB + Cached:         58001952 kB = 59381540

想要一个像这样的输出:

Total Available Memory = 59343812
Total Available Memory = 59381540
...
...

答案1

我不清楚“row zzz”与这个问题有什么关系。在 zzz 行之前是否还出现了您想要忽略的“MemFree:”和“Cached:”?但这里有一个简单的解决方案,可以捕获“MemFree:”行第二列的值,保存它,并将其添加到下一个“Cached:”行的值中:

awk '
    $1 == "MemFree:" { free = $2 }
    $1 == "Cached:"  { print "Total Available Memory =", free+$2 }
    '

相关内容