리눅스 시스템에서 FTP로  파일 업로드를 한 뒤, VI 또는 CAT 명령어로 텍스트를 읽어들이면 깜짝 놀라는 경우가 있다. 바로 '컨트롤 M'이라 불리우는 키워드 때문이다. 컨트롤 M의 생김새는 꺽쇄(^) 표시와 알파벳 M이 합쳐진 모양이다. 사용자가 직접 타이핑해서 입력한 '^M'와는 내부적으로 다른 문자다. 셈플 파일명은 'CtrlM.sh'이며 모양새는 아래와 같다.

 

 

CtrlM.sh

 

 

 

 

컨트롤 M은 'Ctrl + v + m'을 순차적으로 입력하면 발생시킬 수 있다. O/S 간의 파일 이동시 앤터값 처리방식 차이 때문에 가비지(garbage) 값 처럼 남아있게 된다. 이러한 귀찮음이 주렁주렁 열려있는 컨트롤 M을 없애는 방법에는 다양한 방법이 존재한다. 다시한번 주의할 점은 아래의 예제 중 '^M'은 'Ctrl + v + m'을 눌러서 입력해야 한다.

 

 

 

 

-. vi 편집기

vi 편집기로 텍스트 파일을 오픈한 뒤, 명령어 입력을 통해 변경

 

:%s/^M//

:wq!

( CtrlM.sh 파일에 그대로 저장 )

 

 

-. sed 명령어

파일의 문자를 사용자의 입맛대로 파싱할때 사용하는 명령어

 

View: sed 's/^M//g' < CtrlM.sh

Save: sed -i 's/^M//g' < CtrlM.sh

        ( CtrlM.sh 파일에 그대로 저장 )

 

 

-. tr 명령어

파일의 문자열을 변경하고 싶을떄 사용하는 명령어

 

View: tr -d '^M' < CtrlM.sh

Save: tr -d '^M' < CtrlM.sh > After.sh

        ( After.sh 파일로 저장 )

 

 

-. awk 명령어

sed 명령어와 마찬가치로 문자열을 파싱할때 사용하는 명령어

 

View: awk 'sub(/^M/, "");' CtrlM.sh

Save: awk 'sub(/^M/, "");' CtrlM.sh > After.sh

        ( After.sh 파일로 저장 )

 

 

 

여러가지 명령어를 통해서 변경하는 방법을 찾아봤다. 본인의 경우 단일 파일은 변경할때는 vi 편집기로 직접 열어서 변경하는게 편리하며, 복수개의 파일을 변경할 경우에는 sed 명령어로 덮어쓰기해서 변경한다. 물론 잘못 덮어쓰면 곤란해지기 때문에 신중을 기울여야 한다. 이로써, 간단한 방법으로 리눅스에서 개행문자열을 바꾸는 방법을 알아봤다.

 

 

Private comment