Windows 파일을 Linux 서버에 업로드한 후 읽을 수 없습니다. 줄바꿈 문제인 것으로 나타났습니다.

Linux에서 vim으로 작성한 test.txt 파일을 Windows로 복사했을 때 모든 내용이 한 줄에 표시되었습니다. Windows에서 작성한 test.txt 파일을 Linux로 복사했을 때 Linux 프로그램이 비정상적으로 실행되었습니다. Windows에서 Linux 쉘 스크립트를 작성하여 Linux로 복사하여 실행하면 문제가 발생합니다. 문제는 줄 바꿈 문자 ^M!에 있습니다.

Linux에서 Windows 파일의 \r을 제거하는 방법

vim에 작성된 test.txt 파일을 복사합니다.윈도우에서 리눅스 쉘 스크립트를 작성하여 리눅스에 복사하면 문제가 발생합니다. 문제는 다음과 같습니다.^M이 몸에 있어요!

Unix 시스템에서는 각 줄이 "로 끝납니다.<换行>", 즉, "\n";
Windows에서는 각 줄이 "로 끝납니다.<换行><回 车>", 즉 "\n\r"입니다.
그 결과, Unix 시스템의 파일을 Windows에서 열면 모든 텍스트가 한 줄이 됩니다.
Windows의 파일을 Unix에서 열면 각 줄의 끝에 ^M 기호가 추가될 수 있습니다.
vim을 사용하여 처리합니다
vim 명령 모드에서 %s/^M$//g를 입력하세요.
Enter 키를 누르면 파일에서 모든 ^M 문자가 자동으로 삭제됩니다.
그렇다면 이 명령어는 무슨 뜻일까요? %는 파일 전체를 일치시키고, s는 대체를 의미하며, ^M은 Ctrl + V(Ctrl + M)를 사용하여 입력해야 합니다. $는 M 다음에 오는 명령어로 줄 끝의 내용을 일치시키고, 마지막 g는 각 줄에서 일치하는 내용을 바꿔야 함을 의미합니다.
명령어의 의미를 이해하면 유연하게 사용하기가 더 쉬워질 것입니다. 예를 들어, 파일 내 모든 Vim을 VIM으로 바꾸려면 다음과 같은 명령어를 사용할 수 있습니다: :%s/Vim/VIM/g.

방법 1: :%s/^M//g

명령 모드에서: 입력: %s/^M//g를 입력한 다음 Enter를 눌러 교체합니다.
"^M"의 입력은 각각 "Ctrl+v"와 "Ctrl+M"으로 생성됩니다.

방법 2::set fileformat=unix

vi로 텍스트 파일 열기
vi 편집할 파일의 이름
명령 모드로 들어가세요
:set 파일 형식=유닉스
:w

방법 3: sed 도구 사용

sed 도구 사용
sed 's/^M//' 파일 이름 > tmp_filename

방법 4: tr -d '\r'

물론 Windows에서는 캐리지 리턴 문자에 '\r'이 추가로 있으므로 '\r'을 삭제하면 다음과 같은 결과를 얻을 수 있습니다.
tr -d '\r'

방법 5: dos2unix 명령어(가장 일반적으로 사용되는 방법)

dos2unix 명령어:
dos2unix 변환할 파일의 이름
파일을 Unix 형식으로 직접 변환
위의 방법을 사용하면 Windows에서 편집한 파일을 Linux에서 읽을 수 있는 파일로 변환할 수 있습니다.

1/5 - (1 투표)

댓글남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다