줄 종결자가 있는 ASCII 텍스트 파일(Mac 스타일)은 줄 종결자(DOS/Windows 스타일) CR
로 변환되어야 합니다 .CRLF
CR
따르지 않는 것을 검색하여 로 LF
바꿉니다 . 따라서 반복된 명령은 파일을 손상시키지 않습니다( ).CR
CRLF
CRCRLF
시도해 보았지만 unix2dos
변환에 실패했습니다.
Python/vim 없이 기본 Arch Linux 콘솔에서 이 파일을 어떻게 변환할 수 있나요?
답변1
dos2unix
이 유틸리티(DOS에서 Unix 텍스트 형식으로 파일을 변환하는 유틸리티)를 설치하면 각각 Mac 텍스트 파일에서 Unix 텍스트 파일 형식으로, Unix에서 DOS로 변환을 수행하는 mac2unix
및 유틸리티도 제공됩니다. 그런 다음 Unix 텍스트를 중간 형식으로 사용하여 Mac 텍스트 형식을 DOS 텍스트 형식으로 변환 unix2dos
할 수 있습니다 .mac2unix
unix2dos
mac2unix myfile
unix2dos myfile
동일한 파일이나 파일 세트에 대해 여러 번 실행하는 것이 안전합니다.
BusyBox(예: Alpine Linux)에는 내장 dos2unix
및 unix2dos
명령이 있지만 mac2unix
명령은 없습니다. 따라서 BusyBox 시스템에서는 dos2unix
이 패키지에 액세스하려면 이 패키지도 설치해야 합니다 mac2unix
.
답변2
Mac2dos 파일은 Perl을 사용하여 변환할 수 있습니다:
$ perl -pe 's/\r\n|\n|\r/\r\n/g' input-file.txt > output-file.crlf
또는 인라인:
$ perl -pi -e 's/\r\n|\n|\r/\r\n/g' file-to-convert
원천:https://stackoverflow.com/a/14155400/529778그리고https://stackoverflow.com/a/6374360/529778
답변3
"... 없이 기본 Arch Linux 콘솔에서 이 파일을 어떻게 변환합니까?"라고 물으셨기 때문에 아무것도 설치하지 않고 모든 Unix 시스템의 모든 쉘에서 awk를 사용하고 전체 입력 파일을 메모리로 읽지 않고도 모든 파일을 변환합니다. CR을 CRLF로:
awk -v RS='\r' -v ORS='\r\n' '1'
예를 들어:
$ printf 'foo\rbar\r' | cat -ve
foo^Mbar^M$
$ printf 'foo\rbar\r' | awk -v RS='\r' -v ORS='\r\n' '1' | cat -ve
foo^M$
bar^M$
또한 "반복된 명령은 파일을 손상시키지 않습니다(CRCRLF 사용)"라고 말했지만 입력을 읽어서 파일이 있는지 알 수 있는 방법이 없기 때문에 다시 호출되는 명령을 강력하게 처리할 수 있는 방법이 없다고 생각합니다. s가 거기에 배치되기 전에 도구를 실행할 때 그 안에 있거나 원래 입력에서 s 뒤에 s가 \r\n
있는 경우에는 그렇게 하지 마십시오!\n
\r