로그 파일에 숫자를 추가하는 방법

로그 파일에 숫자를 추가하는 방법

Messages아래와 같이 로그 파일에서 값의 합(427852+ 403553+ 385167)을 얻고 싶습니다 . 나는 cut과 awk를 시도했지만 운이 없었습니다.

2019-08-27 21:52:49 INFO  =- Reporting Cycle:10000 Lines:427852 Messages: 427852 IO_time:1391 Active Threads: 3
2019-08-27 21:52:59 INFO  =- Reporting Cycle:10000 Lines:403553 Messages: 403553 IO_time:1212 Active Threads: 3
2019-08-27 21:53:09 INFO  =- Reporting Cycle:10000 Lines:385167 Messages: 385167 IO_time:1200 Active Threads: 3

답변1

Messages:파일의 9번째 필드( 예제에서는 9번째 필드가 이후 필드임)의 합계만 원하는 경우 다음을 수행할 수 있습니다.

$ awk '{k+=$9}END{print k}' file
1216572

필드가 변경될 수 있거나 실제로 그 뒤에 공백이 없는 경우 Messages:(다른 필드에는 공백이 없는 것 같음) 메시지 뒤의 숫자를 추출하여 합산할 수 있습니다.

$ grep -oP 'Messages:\s*\K\d+' file | awk '{k+=$1}END{print k}' 
1216572

위의 내용에는 GNU가 필요합니다 grep. GNU가 없으면 언제든지 다음을 사용할 수 있습니다 perl.

$ perl -lne '/Messages:\s*(\d+)/; $k+=$1; END{print $k}' file
1216572

관련 정보