특정 텍스트로 시작하는 여러 줄을 한 줄로 요약하는 방법

특정 텍스트로 시작하는 여러 줄을 한 줄로 요약하는 방법

특정 텍스트로 시작하는 여러 줄을 한 줄로 요약하는 방법은 무엇입니까?

예를 들어:

P220002009034028180002          SSM      200903
P22200I2004220000     0408832000000000 
P222500903200000015{ 
P22261000005500000 
P22200I2008660000    8532818700000000 
P22467809000033336{ P2298320000550000 
P22230Y000003Va0    000000 0000000000 0000000000997  000000000000     Z N2 

P22200I으로 시작하는 줄을 확인한 후 다음 줄이 발견될 때까지 그 아래의 모든 후속 줄을 한 줄로 병합하려면 어떻게 해야 합니까 P22200I? 이 "요약" 작업은 P22200I로 시작하는 행에서만 수행되어야 합니다.

출력은 다음과 같아야 합니다.

P220002009034028180002          SSM      200903 
P22200I2004220000    0408832000000000  P222500903200015{
P22200I2008660000    85328187000026574 P224678090033336{ P22230Y000003Va0  000000 

저는 리눅스를 사용하고 있습니다.

답변1

그리고 awk:

awk 'BEGIN{ ORS="" }
  FNR>1 && /^P22200I/{ printf "\n" }
  1
  END{ printf "\n" }
' file

출력 레코드 구분 기호를 빈 문자열(기본값 \n)로 설정하고, 현재 줄이 첫 번째 줄이 아니고 줄이 시작되는 경우 개행 문자를 인쇄합니다 P22200I. 그런 다음 현재 줄( 1)을 인쇄합니다.
파일 끝에 도달하면 또 다른 줄 바꿈을 인쇄합니다.

산출:

P220002009034028180002          SSM      200903
P22200I2004220000     0408832000000000 P222500903200000015{ P22261000005500000 
P22200I2008660000    8532818700000000 P22467809000033336{ P2298320000550000 P22230Y000003Va0    000000 0000000000 0000000000997  000000000000     Z N2 

관련 정보