我有这段代码:
sed -i -s "1i${var}" $file
我需要将变量var
的所有内容复制到文件的顶部而不删除文件的内容。当var
有一行时,该命令运行良好,但当var
有多行时,我收到此错误:
sed: -e expression #1, character 28: extra characters after command
我需要使用sed。
有什么想法吗?
感谢。
答案 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
命令。