AIX/ksh의 각 출력 행 앞에 탭 문자를 넣습니다.

AIX/ksh의 각 출력 행 앞에 탭 문자를 넣습니다.
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'

관련 정보