댓글 쓰기 권한이 없습니다. 로그인 하시겠습니까?
LINUX
2014.07.14 21:31
CR, LF, ^M - vi로 DOS<->UNIX 줄바꿈 전환
조회 수 39798 댓글 0
CR, LF 는 줄바꿈 문자..
DOS<->Unix화일 주고 받을때 종종 문제가 되는데.. 모른척 종종 넘겨버렷으나 이번기회에 대충 집고 넘어가기.. * 유닉스(Unix)/리눅스(Linux)에는, LF (헥사로는 0x0A에 해당) 문자로 줄바꿈을 하고 * 도스(DOS)/윈도우(Windows)에서는, CR-LF (헥사로는 0x0D 0x0A에 해당) 라는 2문자로 줄바꿈을 하고 * 맥(Mac)에서는, CR (헥사로는 0x0D 에 해당) 로 줄바꿈합니다. "\n" 로 표현합니다. 줄바꿈 문자는 눈에 보이지 않기 때문에, 파일로 저장한 후, "헥사 뷰어"나, "헥사 에디터"로 보아야 알 수 있다. UltraEdit Edit->Hex Functions을 사용하거나.. cmd> hexdump.pl FileName.txt 유닉스에서 DOS화일을 바꾸는 방법(출처:http://yoonow.tistory.com/56) 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 fileName.txt ^M is ascii 15 so : $ sed 's/'`echo "\015"`'//g' file > filenew tr -d "\015\032" < dosfile > unixfile 015 is CR 032 is Ctrl-Z 그리고 다음과 같이 하면 ^M 문자가 생기죠. $ unix2dos FileeName.txt 2.2 cat과 tr을 이용한 방법 다음과 같이 하면 해당 파일의 ^M 문자가 없어집니다. $ cat dos-file | tr -d ^M > unix-file 2.3 perl 스크립트 다음과 같이 하면 여러파일을 한번에 바꾸게 됩니다. # perl -i -pe 's/\015//g' *.html *** How to insert CR, LF in SQR *** chr(13) is the indicator for Carriage Return (CR). chr(10) is the character for Line Feed (LF). Here is example code that uses both: let $cr = chr(13) let $lf = chr(10) let $crlf = $cr || $lf Dreamy의 코드 스크랩내가 모으고 내가 보는
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Designed by sketchbooks.co.kr / sketchbook5 board skin
Sketchbook5, 스케치북5
Sketchbook5, 스케치북5
Sketchbook5, 스케치북5
Sketchbook5, 스케치북5