テキストファイル内の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

価値観をまとめたい空きメモリ:そして隠れ家:各繰り返しごとに。 1行には3つの列があります。 KBは3番目の列です。

たとえば、

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:」行の2番目の列の値をキャプチャして保存し、次の「Cached:」行の値に追加する簡単な解決策は次のとおりです。

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

おすすめ記事