$ sed 's/asdf/qwer/g' a.txt
qwerqwerqwerqwerqwer...(생략)

위의 커맨드처럼 sed를 파일에 대해 그냥 사용하면 결과가 다시 파일에 써지는 것이 아니라, stdout으로 출력된다 -_-
그래서 "아! 리다이렉션을 사용하면 되겠구나" 하고 다음 커맨드를 입력하면(절대 안됩니다 절대)..

 시도: $ sed 's/asdf/qwer/g' a.txt > a.txt

 결과: $ ls -l
        -rw-rw-r--. 1 kcy1019 kcy1019 0  2월  2 12:12

절대 하면 안됩니다... 절대로..
이럴 땐 그냥 아래처럼 하면 여러모로 안전하고 편리하게 할 수 있습니다.

$ sed -i.bak 's/asdf/qwer/g' a.txt
$ ls -l
-rw-rw-r--. 1 kcy1019 kcy1019 100  2월  2 12:12 a.txt
-rw-rw-r--. 1 kcy1019 kcy1019 100  2월  2 12:12 a.txt.bak

참고: http://stackoverflow.com/questions/5171901/sed-command-find-and-replace-in-file-and-overwrite-file-doesnt-work-it-empties

신고