다수의 파일에서 ^M 문자를 모두 없애는 쉘스크립트
2013.05.09 19:15
원문 : http://www.ischo.net -- 조인상 // 시스템 엔지니어
Writer : http://www.ischo.net -- ischo // System Engineer in Replubic Of Korea
+++++++++++++++++++++++++++++++++++++++++++++++++++++++
원문 : http://www.ischo.net -- 조인상 //시스템 엔지니어
+++++++++++++++++++++++++++++++++++++++++++++++++++++++
윈도우식 CR 값이 들어간 ASCII파일을 유닉스 시스템에서 열면 ^M 으로 표시되는데
vi 에서는
: 1,$s/^M//g ( * ^M을 입력시 CTRL+V, M을 입력한다)
으로 한개의 파일에 대해서 ^M 문자를 치환가능하다.
쉘에서는
# sed 's/\^M//g' 파일명
으로 ^M 문자가 빠진 내용을 화면으로 출력할 수 있으며,
# sed 's/\^M//g' 파일명 > 새로운파일 ; mv -f 새로운파일 파일명
와 같은 방식으로 본래의 파일 내용을 변경시킬 수 있다.
응용하여 디렉토리내 다수의 파일을 모두 변경시키고자 하면 다음과 같은 쉘스크립트로 처리할 수 있다.
#!/bin/ksh
for FILENAME in `find . -type f`
do
sed -e 's/^M//' ${FILENAME} > tempfile
mv -f tempfile ${FILENAME}
done
rm -rf tempfile
(* 여기서도 ^M 은 CTRL+V,M 으로 입력한다. 터미널 표현에 따라서 화면에 안나올수도 있지만 표시가 되지 않아도 입력이 되지 않은것이 아니므로 그냥 진행한다)