繁体   English   中英

bash shell脚本中的sed错误

[英]Sed error in bash shell script

我有以下代码:

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

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

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

我需要使用sed。

任何想法?

谢谢。

如果$ 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. 

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM