tyl*_*ero 5 sed shell-script variable
我使用 shell 脚本来设置不同类型的虚拟机。这些脚本通常包含多行变量,需要使用sed
.
如果我像这样创建它们,一切都很好:
VAR="Config Line1\nConfig Line2\nConfig Line 3"
sed -i "/MatchingPattern/ a $VAR" somefile
Run Code Online (Sandbox Code Playgroud)
但这并不会使脚本变得非常可读,特别是因为文本块可能很长。
如果我这样写:
VAR="Config Line1
Config Line2
Config Line 3"
sed -i "/MatchingPattern/ a $VAR" somefile
Run Code Online (Sandbox Code Playgroud)
运行脚本时出现错误:sed: -e expression #1, char 31: unknown command:
C'`
有没有办法使用sed
这样声明的变量?
该错误是由于sed
附加命令a
在实际的后面需要一个反斜杠a
:
使用 GNU sed
:
$ sed "/pattern/a\\$VAR" file.in >file.out
Run Code Online (Sandbox Code Playgroud)
sed
据我所知,BSD只能使用该a
命令将一行插入到文件中,除非换行符被正确转义。
关于如何使用 BSD 解决此问题的密切相关答案sed
:http://unix.stackexchange.com/a/60322