伪代码
printf "Masi \nwas \nhere" > /tmp/2
sed -i "1i \tword \t 'include word'" /tmp/2
预期输出:第一个 之前的制表符word
。输出:tword 'include word'
。尝试使用变量来解决too-few-ticks-问题
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
脚本可阻止您的 shell 使用 执行操作\t
(或插入另一个,\
如上面的第二个示例所示)。使用单引号$sentence
与sed
脚本连接,以便 shell 对其进行扩展。