개발자라면 한 번쯤은 Unix와 Windows 간 파일 포맷 차이로 인해 발생하는 문제를 경험해 보셨을 겁니다. 특히, vi 편집기로 파일을 열었을 때 줄 끝마다 ^M 문자가 나타나는 현상은 꽤나 흔한데요. 이 문제는 Windows의 줄바꿈 방식(CRLF)과 Unix/Linux의 줄바꿈 방식(LF)의 차이로 인해 발생합니다. 이러한 ^M 문자는 가독성을 방해할 뿐만 아니라 스크립트 실행 오류의 원인이 되기도 합니다.
이번 블로그에
서는 ^M 문제를 해결하는 방법을 자세히 알아보겠습니다.
1. ^M 문자란?
^M 문자는 파일에 포함된 Carriage Return(CR, \r) 문자를 표시한 것입니다. Windows에서는 줄바꿈을 표현할 때 CR과 Line Feed(LF, \n)를 함께 사용하지만, Unix/Linux에서는 LF만 사용합니다. 이로 인해 Windows에서 작성된 파일을 Unix/Linux 환경에서 열면 CR이 ^M으로 표시됩니다.
2. ^M 문제 해결 방법
방법 1: dos2unix 유틸리티 사용
dos2unix는 Windows 형식의 파일을 Unix 형식으로 변환하는 데 사용되는 간단한 명령어입니다.
sudo apt install dos2unix # 유틸리티 설치 (Ubuntu 기준)
dos2unix filename.txt # 파일 변환
dos2unix *.txt # 디렉토리 내 모든 .txt 파일 변환
이 방법은 빠르고 효율적이며, 대부분의 Unix/Linux 배포판에서 지원됩니다.
방법 2: vi 명령어로 직접 수정
vi 편집기를 사용하여 ^M 문자를 제거할 수 있습니다.
- vi로 파일 열기:
- vi filename.txt
- 명령 모드에서 다음 명령 실행 : 이 명령은 파일 전체에서 ^M(Carriage Return)을 찾아 제거합니다.
여기에서 ^M 은 Control + v + m 을 눌러서 입력해야합니다
:%s/^M//g
방법 3: tr 명령어 사용
tr은 문자 변환에 사용되는 명령어로, ^M 문자를 제거할 때 유용합니다.
여기에서 ^M 은 Control + v + m 을 눌러서 입력해야합니다.
tr -d '^M' < filename.txt > newfile.txt
방법 4: sed 명령어 사용
sed를 사용하면 파일 내용을 직접 수정할 수 있습니다.
sed -i 's/\r//' filename.txt
방법 5: perl 스크립트 사용
perl을 사용하면 줄바꿈 문제를 보다 정교하게 처리할 수 있습니다.
perl -pi -e 's/\r//' filename.txt
3. 각 방법의 특징
dos2unix | 간단하고 빠르며 다수 파일 처리에 적합 | 추가 소프트웨어 설치가 필요 |
vi | 추가 설치 없이 수정 가능 | 대량 파일 처리에는 비효율적 |
tr | 단일 파일 수정에 적합 | 원본 파일이 수정되지 않음 |
sed | 빠르고 강력한 수정 도구 | 명령어 문법이 다소 복잡할 수 있음 |
perl | 복잡한 작업에 적합 | 명령어가 길고 초보자에게 어려울 수 있음 |
^M 문제는 Windows와 Unix/Linux 간의 줄바꿈 방식 차이에서 비롯되는 흔한 문제입니다. 이를 해결하기 위해 dos2unix, vi, tr, sed, perl 등의 다양한 방법을 사용할 수 있습니다. 상황과 환경에 따라 적절한 방법을 선택하면 됩니다.
이 글이 여러분의 개발 환경에서 발생하는 ^M 문제를 해결하는 데 도움이 되었길 바랍니다.
'IT&DEV - IT & 개발 > ETC' 카테고리의 다른 글
워드프레스 도메인 변경 (WordPress 주소 변경) (1) | 2024.12.30 |
---|---|
네이버에 워드프레스 블로그 등록하기(서치어드바이저,웹마스터도구) (2) | 2024.12.29 |
[Mac] 맥북 와이파이 공유 - 인터넷 공유기처럼 사용하기 (3) | 2024.12.27 |
[OMV6] Portainer Docker Wordpress 설치하기 (1) | 2024.12.27 |
[OMV6] Docker에 Ubuntu와 Mysql 설치 (ifconfig/mysql 패스워드) (3) | 2024.12.24 |
댓글