예전 LUG 데이터인데 많이들 검색하시는 듯하여 다시 올려봅니다.

vi(m) 사용시 ^M 없애기

vi(m)을 사용하다보면 윈도우즈에서 작업한 텍스트 파일에 ^M 문자가 붙습니다.
현재 vi(m)에서는 도스 문서로 문서를 읽게 되면, 이 문자가 붙지 않지만
가끔 이 문자 때문에 문서 보기가 상당히 귀찮아 보일 때가 있습니다.
특히, SQL 백업 파일을 볼 때 이 문자가 붙기도 하는데, 특정한 내용을 볼 때
이런 문자가 붙은 문서들은 가독성이 좋지는 않지요. 

이 문자는 ^M은 ^+M이 아니라 Control+v+m 입니다. 

아래는 오래 전 http://www.lug.or.kr 에 올라왔던 몇 개의 팁을 정리, 추가한 것입니다.

1. vi(m)이 열린 상태


1.1 문자 치환 명령 이용
다음과 같이 문자 치환 명령으로 이 문자를 없애도록 합니다.
:1,$s/^M//g

물론 이것의 입력은 다음과 같이 하도록 합니다.
:1,$s/[Control]+v+m을 누른다.//g

1.2 파일포맷 변경
vim 5.0 이상에서는 다음과 같이 명령을 내리도록 합니다

:set fileformat=unix
혹은
:set ff=unix
그리고, 저장하고 종료합니다.
:wq

이와 반대로 끝에 ^M붙이려면 다음과 같이 합니다.
:set fileformat=dos

이전버전에서는 다음과 같이 합니다.
:set textmode

2. 프롬프트 상에서


2.1 dos2unix 이용
dos2unix와 unix2dos를 이용하여 변환할 수 있습니다.

다음과 같이 하면 ^M 문자가 없어집니다.
$ dos2unix [문서명](여러 파일의 경우 *.확장자)

그리고 다음과 같이 하면 ^M 문자가 생기죠.
$ unix2dos [문서명]

2.2 cat과 tr을 이용한 방법
다음과 같이 하면 해당 파일의 ^M 문자가 없어집니다.
$ cat dos-file | tr -d ^M > unix-file

2.3 perl 스크립트
다음과 같이 하면 여러파일을 한번에 바꾸게 됩니다.

# perl -i -pe 's/15//g' *.html

3. 다른 에디터의 사용

pico 라는 에디터 아실겁니다. 기능은 별로 없지만 빠르고 간편하죠.
vi나 emacs에서 ^M으로 잡히는 것이 pico에서는 안 잡히는데,
파일을 pico로 열어서 다시 이 문서를 저장합니다.
그리고 vi나 emacs로 읽으면 ^M이 모두 없어진 것을 알 수 있습니다.

4. man 페이지의 ^M, ^H 문자

man 페이지를 일반 화일로 바꾸면 ^M, ^H 등이 생기는데
다음과 같이 하면 이 문자를 없애고 볼 수 있습니다.

다음은 ls의 예입니다.
4.1 ps 또는 pdf로 변환하기
man -t 변경시킬 파일 > 변경 후 파일명.ps
man -t 변경시킬 파일 > 변경 후 파일명.pdf
예)
man -t ls > ls.ps 또는 ls.pdf로 보시면 됩니다.

4.2 텍스로 변환하기
man 변환시킬화일 | col -b> 변환후 화일명.txt
예)
man ls | col -b > ls.txt 

5. 클라이언트 에디터 사용시

클라이언트 에디터로 필자는 아크로에디터를 사용합니다.
다운로드 사이트 > http://www.acrosoft.kr

아크로에디터 사용시에는 FTP접속을 사용하여 파일을 열고, 편집시에
파일 > 변환 > UNIX 형식 과
파일 > 변환 > 유니코드 UTF-8 로
설정하면 파일은 유닉스형식의 utf-8 캐릭터셋을 가지게 되고,
저장 후 리눅스에서 vi로 보면 ^M문자가 없는 파일로 보입니다.

 

출처 : 한국리눅스유저그룹 - LUG KOREA

+ Recent posts