파일에서 모든 CRLF를 제거하는 방법(LF로 바꾸지 않고)

파일에서 모든 CRLF를 제거하는 방법(LF로 바꾸지 않고)

\r\n예를 들어 파일에서 줄 바꿈(CRLF)이 뒤따르는 모든 캐리지 리턴을 제거하고 싶습니다 . 어떻게 해야 하나요? dos2unixCRLF를 LF로 대체하기 때문에 사용할 수 없습니다 . 이전에 없는 tr항목도 대체하므로 사용할 수 없습니다 . 어떻게 해야 합니까?\n\r

답변1

sed ":a;/\r$/{N;s/\r\n//;b a}"

'\r'이것은 끝에 (뒤에)가 있는 모든 행과 일치합니다 '\n'. 해당 줄에서는 먼저 입력의 다음 줄을 추가하고( '\n사이에 구분 기호를 넣는 동안) 결과를 빈 문자열로 바꾼 다음 "\r\n"처음으로 돌아가 패턴 공간의 새 내용이 일치하지 않는지 확인합니다. 또 우연히.

'\r'설명에 따라: 파일에서 다른 항목을 제거 하려면 CRLF 조합을 제거한 후 추가하면 됩니다.

sed ":a;/\r$/{$!N;s/\r\n//;t a};s/\r//g"

답변2

나는 줄 끝을 조작하는 것과 관련된 작업을 할 때 perl퀴프를 사용하는 경향이 있습니다.

perl -pe 'BEGIN {undef $/} s/\r\n//g' *.txt

이 작업을 수행하는 핵심은 undef $/Perl이 각 파일을 문자열로 읽도록 하고 이를 검색하고 바꿀 수 있다는 것입니다. \r알몸이 되려면 정규식을 조정하십시오.

perl -pe 'BEGIN {undef $/} s/\r\n?//g' *.txt

관련 정보