텍스트 파일에서 선택적으로 열을 출력합니다.

텍스트 파일에서 선택적으로 열을 출력합니다.

첫 번째 열과 특정 패턴을 따르는 텍스트를 가져오려는 로그 파일을 구문 분석하려고 합니다.

로그 파일은 다음과 같습니다.

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:다음 첫 번째 필드와 마지막 필드를 인쇄합니다.

관련 정보