본문 바로가기

Coding

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

vi 에디터 사용시 윈도우에서 작업한 파일에 ^M 문자가 붙는경우가 있습니다.
정말 귀찮기 짝이 없죠. 아래 방법을 참고하시기 바랍니다. KLDP에서 퍼왔습니다.

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/\015//g' *.html

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

4. man 페이지의 ^M, ^H 문자 
man 페이지를 일반 화일로 바꾸면 ^M, ^H 등이 생기는데(예, 한컴리눅스 ^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

'Coding' 카테고리의 다른 글

색을 랜덤하게 뽑아서 출력합니다.  (0) 2017.01.07
php predefined variables  (0) 2017.01.06
주민번호 생성원리  (0) 2017.01.06
CGI Setting  (0) 2017.01.06
쉘프로그래밍 문법  (0) 2017.01.06