고객사 방문하여 작업 중 접해서 당혹스러운 상황에 다행히도 도움을 받아 해결했지만, 잊지 않도록(?) 기록해두기 ...

1. Check
# vi -b <% file name %>

2. Remove
:%s/^M$//g
Note. '^M' = <Ctrl> + <V> + <M>
         Not! '^'+'M'


Windows/DOS : CRLF(Carriage return) 조합으로 줄바꿈을 정의 (커서의 위치를 앞으로 이동)
Unix/Linux/C : LF(Line Feed) 만으로 줄바꿈을 정의 (현재 위치에서 바로 아래로 이동)

이로 인해(개행 방식 차이), 윈도우에서 작성된 것을 Unix/Linux 계열로 올리면 vi로 편집시 ^M이 붙는 경우가 발생함.

- ftp를 통해 전송하면 방식이 텍스트/2진 중 어떤 것을 이용하는가에 따라 달라질 수 있음
-- 텍스트 방식으로 전송하면 데이터 변환이 생겨 '/r/n' > '/n' 으로 됨. 
-- 2진 모드로 전송하면 변환이 생기지 않아, 윈도우에서 작성된 파일이 컴파일이 안되거나 script작성 된것이 동작 안할 수 있음

vi:
:%s/^M//g

tr(translate):
tr -d ^M <% file %> <% newfile %>

sed(stream editor):
sed 's/^M//g' <% file %> >  <% newfile %>

 

 

참조자료:

server-engineer.tistory.com/482

jink1982.tistory.com/123

misctechmusings.com/remove-ctrl-m-characters-linux

 

 

 

 

반응형
Posted by 스쳐가는인연

댓글을 달아 주세요