sed에서 tab사용하기

alfalf의 이미지

sed에서 replace 등을할때 tab 문자를 어떻게 넣어야 할까요?
echo등에서는 '-e' 옵션을 사용하여 '\t' 문자를 사용하면 되는데
sed에선 책을 찾아봐도 사용할수 없다고 나와 ctrl-v & tab키를
이용하여 직접 tab 문자를 넣고 있습니다.
혹시 더 편한 방법이 없을까요?

Prentice의 이미지

안녕하세요,

http://sed.sourceforge.net/sedfaq4.html#s4.2

Quote:
# replace 0x1A (32 octal) with ASCII letters
sed 's/'`echo "\032"`'/Ctrl-Z/g'

# note the 3 backslashes in the command below
sed "s/.`echo \\\b`//g"

실제로 sed "s/`/bin/echo \\\t`//g" foo 해보니 잘 되네요.. -e를 안써도 되는 이유는 모르겠습니다. ;; 참고로 제가 쓰는 프로그램들 버젼은 다음과 같습니다.

GNU bash, version 2.05b.0(1)-release (i386-pc-linux-gnu)
echo (GNU coreutils) 5.0.90
GNU sed version 4.0.7

monpetit의 이미지

혹시 어떤 sed를 사용하시는지 모르겠네요.
GNU sed는 잘 됩니다. (4.0.7에서 테스트했습니다.)
sed 's/\t//g'
FreeBSD 등의 sed는 \t, \r 등을 사용할 수 없더군요.

alfalf의 이미지

먼저 답변해주신 여러분께 감사드립니다.
확인해 보니 'GNU sed version 3.02'에서 '\t'가 작동하지 않는데
'GNU sed version 4.0.5'에선 '\t'가 작동하더군요.
그럼...

sunyzero의 이미지

Ctrl+V,TAB 을 누르면 ^I 로 나타날것입니다. 이게 탭키죠. 이렇게 찾아서 하셔도 됩니다. vi 에서 입력 가능합니다.

========================================
* The truth will set you free.