如何 sed -i '`[echo $var]`i word' 文件?

如何 sed -i '`[echo $var]`i word' 文件?

代码:

pos=2;
printf "Masi \nwas \nhere" > /tmp/1
sed -i '`echo $pos`i huhu' /tmp/1

预期输出:

马西
呼呼
曾是
这里

电流输出:

sed: -e expression #1, char 1: unknown command: ``'

答案1

不计算撇号中的表达式(也不计算子 shell 或变量)。您需要使用普通引号:

$ pos=2;
$ printf "Masi \nwas \nhere" > /tmp/1
$ sed -i "`echo $pos`i huhu" /tmp/1
$ cat /tmp/1
Masi 
huhu
was 
here

这相当于

$ sed -i "${pos}i huhu" /tmp/1

(没有子外壳)

相关内容