bash shell脚本中的sed错误

时间:2013-12-05 01:58:58

标签: bash sed

我有这段代码:

sed -i -s "1i${var}" $file

我需要将变量var的所有内容复制到文件的顶部而不删除文件的内容。当var有一行时,该命令运行良好,但当var有多行时,我收到此错误:

sed: -e expression #1, character 28:  extra characters after command

我需要使用sed。

有什么想法吗?

感谢。

2 个答案:

答案 0 :(得分:3)

如果$ var有换行符,sed会给出错误 如果要插入多行,则需要在每行后附加'\'

$ echo abc | sed -e '1iinsert 1st line
2nd line'
sed: -e expression #1, char 21: extra characters after command
$ echo abc | sed -e '1iinsert 1st line\
2nd line'
insert 1st line
2nd line
abc

man sed搜索插入

   i \

   text   Insert text, which has each embedded newline preceded by a back-
          slash.

答案 1 :(得分:2)

您必须考虑sed未展开${var}部分的事实。 巴什呢。 Sed收到一个字符串,其中${var}已被$var的实际内容替换。 您需要确保此类替换将导致有效的sed命令。