com.mysql.jdbc.MysqlDataTruncation: Data truncation: Out of range value for column 'current_state' at r:1
com.mysql.jdbc.MysqlDataTruncation: Data truncation: Out of range value for column 'current_state' at r:2
com.mysql.jdbc.MysqlDataTruncation: Data truncation: Out of range value for column 'current_state' at r:5
java.lang.NullPointerException:12
java.lang.NullPointerException:7
java.lang.NullPointerException:18
java.lang.NullPointerException:2
보시다시피, mysql 오류가 3번 반복되고 있으며 그 빈도는 마지막에 나타납니다. 첫 번째 오류에는 1이 표시되고, 두 번째 오류에는 2가 표시되고, 세 번째 오류에는 5가 표시됩니다. 스크립트에서 합계와 함께 반복되는 행을 유지하고 싶습니다. Java 오류에도 동일한 작업을 수행합니다.
예상 출력:
com.mysql.jdbc.MysqlDataTruncation: Data truncation: Out of range value for column 'current_state' at r:8
java.lang.NullPointerException:39
답변1
awk 'BEGIN{ FS=OFS=":" }
{ freq=$NF; sub(/:[^:]*$/, ""); seen[$0]+=freq }
END{ for (x in seen) print x, seen[x] }' infile
FS는 입력 필드 구분 기호이고 OFS는 출력 필드 구분 기호입니다. 둘 다 콜론으로 설정한 다음 마지막 필드를 $NF
임시 변수 에 넣은 freq
다음 $0
sub() 함수를 사용하여 현재 입력 레코드에서 마지막 필드를 제거합니다.
이를 통해 이전에 변수에 저장한 빈도 seen[$0]+=freq
와 마찬가지로 마지막 필드(마지막 필드는 제외됨)의 값과 동일한 로그 라인을 요약합니다 .freq
그런 다음 마지막에는 배열을 반복하고 개별 행과 전체 빈도를 인쇄합니다.