You cannot see this page without javascript.

메뉴 건너뛰기

WHKorea

OS vi, vim ^M 제거

구피천사 2021.04.01 15:56 조회 수 : 4

 

vi, vim ^M 제거


윈도우에서 작성한 파일을 Unix/Linux상에 올리면 개행 문자가 깨져서 ^M가 보이는 경우를 봤을 것이다.

이것은 윈도우에서는 CRLF 가 개행인데 Linux/Unix에서는 LF가 개행이라 나타나는 현상으로 보면 된다.

 

[CR,LF 뜻]

라인피드(LF : Line Feed) => 현재 위치에서 바로 아래로 이동

캐리지리턴(CR: Carriage return) => 커서의 위치를 앞으로 이동

 

설명은 이정도로 하고 제거 방법을 알아 보자

 

vi, vim에서 제거 하는 방법

 

결론부터 말하면 다음과 같이 하면 된다.

:%s/^M//g

위에서 ^M는 ^+M 이 아니고 Ctrl + v + m 이다.

 

vi에서 입력한 각 명령어에 대해 설명 하겠다.

:         --> vi,vim에서 명령어를 입력 하겠다는 신호

:%s       --> 문자열을 치환하겠다는 명령어

:%s/^M    --> ^M 문자열을 치환하겠다

:%s/^M//  --> ^M 문자열을 공백으로 치환하겠다.

:%s/^M//g --> 해당 문서 전체 ^M 문자열을 공백으로 치환하겠다.

 

 

윈도우에서 Unix/Linux로 파일 올릴때 ^M 안생기게 하는 방법

 

운영체제 마다 줄바꿈 정의가 다르다. 

각 운영체제 마다 정의를 살펴 보자.

 

윈도우/DOS : CRLF 조합으로 줄바꿈을 정의

Unix/Linux/C : LF 만으로 줄바꿈을 정의

 

이래서 윈도우에서 작성 된 것을 Unix/Linux 계열로 올리면 vi로 편집했을 때 ^M이 붙는 것을 확인 할 수 있다.

물론 ftp로 올릴 때 방식이 텍스트/2진 어떤 것을 선택하느냐에 따라 달라질 수 있다.

텍스트 방식으로 올리면 데이터 변환이 생겨 /r/n -> /n 으로 된다. 

2진 모드로 올릴때는 변환이 생기지 않아 윈도우에서 작성된 파일이 컴파일이 안되거나 script작성 된것이 동작 안할 수가 있다.

위로