여러 줄을 결합하여 출력 형태

여러 줄을 결합하여 출력 형태

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

/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

내 생각에는 출력에서 ​​원하는 순서대로 반전되는 것이 아니라 로그 파일에 나타나는 순서대로 행이 나타나기를 원한다고 생각합니다.

관련 정보