使用不会作为命令计算的Sed插入字符串

时间:2014-07-21 20:24:10

标签: unix sed

我正在尝试使用sed在第二行的文本文件中插入字符串cd $var,但它似乎不起作用。我正在使用语法在文件中的特定行插入一行

sed -i '2icd $var' FILE

其格式被认为是对此问题的回答:

Insert a line at specific line number with sed or awk

我最好的猜测是,sed正在逐字地解释命令并对其进行评估而不是将其复制进去。但是,我所有强迫它仅仅作为字符串进行求值的尝试都失败了。到目前为止我的尝试:

sed -i '2i\cd $var' FILE
sed -i '2i\cd \$var' FILE
sed -i "2i'cd $var'" FILE

Line='cd $var'
sed -i "2i$Line" FILE

由于硬报价,我相当确定最后一次尝试会成功,但它仍然失败。

事实上,这也失败了,

sed -i '2icd' FILE

然而这成功了(只是为了确认一般格式):

sed -i '2ic' FILE

为了清楚起见,所有5次失败的尝试都产生了同样的错误:在所需的位置插入了一个空行。

1 个答案:

答案 0 :(得分:2)

sed -i "2 i\\
$var" file

通常需要在i之后逃离NewLine并依赖OS / sed在i之前和/或之后的空间。最后,使用双引号,转义\