![텍스트 파일에서 선택적으로 열을 출력합니다.](https://linux55.com/image/132362/%ED%85%8D%EC%8A%A4%ED%8A%B8%20%ED%8C%8C%EC%9D%BC%EC%97%90%EC%84%9C%20%EC%84%A0%ED%83%9D%EC%A0%81%EC%9C%BC%EB%A1%9C%20%EC%97%B4%EC%9D%84%20%EC%B6%9C%EB%A0%A5%ED%95%A9%EB%8B%88%EB%8B%A4..png)
첫 번째 열과 특정 패턴을 따르는 텍스트를 가져오려는 로그 파일을 구문 분석하려고 합니다.
로그 파일은 다음과 같습니다.
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:
다음 첫 번째 필드와 마지막 필드를 인쇄합니다.