sed -i "1i \t 'word'" 파일에 탭이 없는 이유는 무엇입니까?

sed -i "1i \t 'word'" 파일에 탭이 없는 이유는 무엇입니까?

의사코드

printf "Masi \nwas \nhere" > /tmp/2
sed -i "1i \tword \t 'include word'" /tmp/2

예상 출력: first 앞에 탭 문자가 있습니다 word. 출력: tword 'include word'. 변수를 사용해 너무 적은 틱 문제를 해결해 보세요.

printf "masi \nwas \nhere" > /tmp/2
sentence="\tword \t 'include word'"
sed -i "1i $sentence" /tmp/2

출력: 같은 문제입니다 tword 'include word'.

답변1

정규식으로 해석하는 것이 sed가능할 수도 있지만 스크립트 중 어느 것도 이런 방식으로 사용하지 않습니다. 대신 리터럴 문자열 \t로 사용됩니다 .\t

다음과 같이 원하는 것을 할 수 있습니다.

printf "Masi \nwas \nhere" > /tmp/2
sed -i "1i XwordXinclude word'" /tmp/2
sed -i '1,1s/X/\t/g' /tmp/2

답변2

GNU 사용 sed:

sed -i '1i\\t'$sentence /tmp/2

또는

sed -i "1i\\\t$sentence" /tmp/2

삽입할 텍스트는 첫 번째 텍스트 다음에 시작됩니다 \. sed쉘이 작업을 실행하지 못하도록 스크립트를 작은따옴표로 묶습니다 (또는 위의 두 번째 예와 같이 \t다른 작업을 삽입합니다 ). 쉘이 스크립트를 확장할 수 있도록 하려면 스크립트 주위에 \작은따옴표를 사용하십시오 .$sentencesed

관련 정보