의사코드
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
다른 작업을 삽입합니다 ). 쉘이 스크립트를 확장할 수 있도록 하려면 스크립트 주위에 \
작은따옴표를 사용하십시오 .$sentence
sed