
첫 번째 열과 특정 패턴을 따르는 텍스트를 가져오려는 로그 파일을 구문 분석하려고 합니다.
로그 파일은 다음과 같습니다.
2018-04-25 00:00:10,139 INFO [HiveServer2-HttpHandler-Pool: Thread-2678420]: parse.ParseDriver (ParseDriver.java:parse(185)) - Parsing command: show databases
타임스탬프(첫 번째 및 두 번째 열)와 키워드가 포함된 모든 명령의 최종 출력을 원합니다 command:
.
이것을 얻는 깨끗한 방법이 있습니까? 현재 내 계획은 awk
. sed
명령을 가져온 다음 두 출력을 새 파일로 병합하는 데 사용됩니다 .
답변1
다음을 사용하여 이 작업을 수행할 수도 있습니다 cut
.
cut -d' ' -f1,2,12- ${YOUR_LOG_FILE}
또는 (더 안전한):
cat ${YOUR_LOG_FILE} | tr -s " " | cut -d' ' -f1,2,11-
답변2
이건 해야 해
awk -F'(,|command:)' '{print $1, $NF}' infile
2018-04-25 00:00:10 show databases
여기서는 필드 구분 기호인 쉼표 ,
또는 문자열을 정의한 command:
다음 첫 번째 필드와 마지막 필드를 인쇄합니다.