我正在尝试使用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次失败的尝试都产生了同样的错误:在所需的位置插入了一个空行。
答案 0 :(得分:2)
sed -i "2 i\\
$var" file
通常需要在i之后逃离NewLine并依赖OS / sed在i之前和/或之后的空间。最后,使用双引号,转义\