텍스트 파일에서 두 번째 및 세 번째 줄 바꿈 문자를 제거하지만 첫 번째 줄 바꿈 문자는 제거하지 마세요.

텍스트 파일에서 두 번째 및 세 번째 줄 바꿈 문자를 제거하지만 첫 번째 줄 바꿈 문자는 제거하지 마세요.

저는 max osx 10.8에서 개발 중이고 어떤 도구를 사용할지 선호하지 않을 수도 있지만 sed중요하지 않습니다.

댓글 후 업데이트: 입력 파일은 Windows 줄바꿈을 사용합니다. 이로 인해 상황이 복잡해지면 전처리하여 줄바꿈을 Linux 스타일로 변경할 수 있습니다.

Text

Text



text


text

text

나는 이와 같은 출력 파일을 원한다

Text

Text
text
text

text

답변1

awk -vRS='\r\n' -vORS='\r\n' '
  /./||!++n{if (n==1) print "";print;n=0}
  END{if (n==1) print ""}'

답변2

또는 Perl 변형:

perl -e 'undef $/; $_=<>; s/^\n{2,}//mg; print' < infile

설정 해제( undef) 필드 구분 기호( $/). 이로 인해 $_=<>STDIN의 내용이 에 할당된 $_다음 출력 전에 2개 이상의 개행 문자( s/^\n{2,}//mg;) 를 검색하고 바꿉니다 print(이러한 작업은 에서 수행됩니다 $_). 위의 검색 옵션은 개행(여러 줄) 일치를 m허용 하고 문자열의 모든 항목(첫 번째 항목뿐만 아니라)에 패턴을 적용합니다.s///g

2개와 3개의 새 줄에만 작동하는 경우(4개 또는 5개 등에 영향을 주지 않음) 다음을 사용하십시오.s/^\n{2,3}//mg;

DOS 형식 파일의 경우:

perl -e 'undef $/; $_=<>; s/^(\r\n){2,}//mg; print' < infile

관련 정보