다음과 같은 로그 파일이 있습니다.
/export/home/got/logs/o2877612.01:job_1432787863184_159408 Message: org.apache.pig.backend.executionengine.ExecException: ERROR 2118: Input path does not exist: /user/got/distro
/export/home/got/logs/o2877612.01:Module: SUMMARY_PIG
다음 두 줄을 결합하여 최종 로그 파일을 구성하고 싶습니다. 위의 두 줄은 모두 다음으로 시작합니다 /export/home/got/logs/o2877612.01
.
/export/home/got/logs/o2877612.01:Module: SUMMARY_PIG :job_1432787863184_159408 Message: org.apache.pig.backend.executionengine.ExecException: ERROR 2118: Input path does not exist: /user/got/distro
유닉스 명령을 도와줄 수 있나요?
답변1
그리고 awk
:
awk -F: '{if($1!=a){printf "\n%s", $0}else{$1=":";print}} {a=$1}' file
어디:
-F:
구분자 로 사용됩니다:
.if($1!=a){...}
변수에 첫 번째 필드와 동일한 내용이 포함되어 있으면 끝에 줄 바꿈 없이 모든 내용을 인쇄합니다.else{...}
: 그렇지 않으면 첫 번째 필드를 제외한 모든 필드를 인쇄합니다.{a=$1}
if 절에 사용되는 변수를 설정합니다.
산출:
/export/home/got/logs/o2877612.01:job_1432787863184_159408 Message: org.apache.pig.backend.executionengine.ExecException: ERROR 2118: Input path does not exist: /user/got/distro: Module SUMMARY_PIG
내 생각에는 출력에서 원하는 순서대로 반전되는 것이 아니라 로그 파일에 나타나는 순서대로 행이 나타나기를 원한다고 생각합니다.