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