0:root@SERVER:/root # echo "something" | sed -e 's/^/\t/g'
tsomething
0:root@SERVER:/root #
AIX/ksh..왜 작동하지 않나요? 나는 각 줄 앞에 "탭"을 원합니다!
답변1
\t
표현식 오른쪽의 내용 sed
은 이식 가능하지 않습니다. 가능한 해결 방법은 다음과 같습니다.
POSIX 쉘
\0
많은 쉘이 문자열을 내부적으로 cstring으로 저장하므로 입력에 널 문자( )가 포함되어 있으면 행이 조기에 끝날 수 있다는 점을 명심하십시오 .
echo "something" | while IFS= read -r line; do printf '\t%s\n' "$line"; done
앗
echo "something" | awk '{ print "\t" $0 }'
진주
echo "something" | perl -pe 'print "\t"'
답변2
쉘이 bash, ksh93 또는 zsh인 경우 쉘 이스케이프를 사용하여 sed 명령에 리터럴 탭 문자를 배치할 수 있습니다. 따옴표 구문은 $'…'
백슬래시와 작은 따옴표를 제외하고 따옴표 안의 모든 문자를 문자 그대로 처리합니다. 이러한 따옴표 안에는 일반적인 백슬래시 이스케이프 문자를 사용할 수 있습니다.
sed -e $'s/^/\t/g'