
저는 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