텍스트 파일에서 두 패턴을 쌍으로 합산하는 awk 명령

텍스트 파일에서 두 패턴을 쌍으로 합산하는 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 }
    '

관련 정보