`^ M`은 무엇이며 어떻게 제거합니까? 특수 문자와 잘

에서 파일을 열면 vim이상한 ^M문자가 표시됩니다.

불행히도 세계에서 가장 좋아하는 검색 엔진은 쿼리의 특수 문자와 잘 맞지 않으므로 여기에서 묻습니다.

  • ^M캐릭터 는 무엇입니까 ?

  • 어떻게 거기에 도착했을까요?

  • 어떻게 제거합니까?



답변

^M캐리지 리턴 문자입니다. 이것이 보이면 아마도 DOS / Windows 환경에서 시작된 파일을보고있을 것입니다. 여기서 줄 끝은 캐리지 리턴 / 줄 바꾸기 쌍으로 표시되는 반면 Unix 세계에서는 줄 끝 단일 줄 바꿈으로 표시됩니다.

자세한 내용이 기사 를 읽고 newline 의 Wikipedia 항목을 참조하십시오 .

이 문서 에서는 줄 끝 표식이 다른 파일을 투명하게 편집하기 위해 vim을 설정하는 방법에 대해 설명합니다.

^M일부 줄 끝에 파일이 있고 파일을 제거하려면 Vim에서 이것을 사용하십시오.

:s/^M$//

( Ctrl+ V Ctrl+ M를 눌러 삽입하십시오 ^M.)


답변

대부분의 UNIX 운영 체제에는 dos2unixCRLF를 LF로 변환 하는 유틸리티 가 있습니다. 다른 답변은 “무엇입니까”질문을 다룹니다.


답변

이를 수행하는 가장 간단한 방법은 다음 명령을 사용하는 것입니다.

dos2unix filename

이 명령은 경로 패턴에도 적용됩니다 (예 :

dos2unix path/name*

작동하지 않으면 다른 모드를 사용해보십시오.

dos2unix -c mac filename
  • -c변환 모드를 설정하십시오. : CONVMODE 중 하나를 인 경우 ascii, 7bit, iso, macascii기본 인.

답변

이것은 나를 위해 일했다

:e ++ff=dos

: e ++ ff = dos 명령은 Vim에게 파일을 다시 읽도록 지시하여 dos 파일 형식을 강제합니다. Vim은 CRLF 및 LF 전용 줄 끝을 제거하고 버퍼에 각 줄의 텍스트 만 남겨 둡니다.

그때

:set ff=unix

그리고 마지막으로

:wq

답변

캐리지 리턴을 제거하는 다른 방법은 tr명령을 사용하는 것입니다.

다음과 같은 작은 스크립트가 있습니다

#!/bin/sh
tmpfile=$(mktemp)
tr -d '\r' <"$1" >"$tmpfile"
mv "$tmpfile" "$1"

답변

다음과 sed같이 정리할 수 있습니다 .

sed -e 's/^M$//' < infile > outfile

요령은 캐리지 리턴으로 올바르게 들어가는 방법입니다. 일반적으로 C-v C-m리터럴 캐리지 리턴을 입력하려면 입력 해야합니다 . 당신은 또한 함께 sed 작업을 할 수 있습니다

sed -i.bak -e 's/^M$//' infile

답변

이 ^ M은 무엇입니까?
^ M은 캐리지 리턴 문자입니다. 이것이 보이면 아마도 DOS / Windows 환경에서 시작된 파일을보고있을 것입니다. 여기서 줄 끝은 캐리지 리턴 / 줄 바꾸기 쌍으로 표시되는 반면 Unix 세계에서는 줄 끝 단일 줄 바꿈으로 표시됩니다.

어떻게 거기에 도착했을까요?
파일 형식이 변경된 경우

어떻게 제거합니까?
로 파일을여십시오

vim -b FILE_PATH

다음 명령으로 저장하십시오

:%s/^M//g