这个 sed 命令有什么问题?

Qia*_* Li 4 sed

此命令运行良好:

$ sed  -e '/foo/{g; d}' myfile   
Run Code Online (Sandbox Code Playgroud)

但是这个有一个错误:

$ sed  -e '/foo/{g; a bar}' myfile
sed: -e expression #1, char 0: unmatched `{'
Run Code Online (Sandbox Code Playgroud)

它出什么问题了?

Arc*_*ege 9

中的a语句sed需要实际的换行符 ( Cntl-j),而不是嵌入的回车符 ( Ctrl-m)。因此,真正使a语句起作用的唯一方法是:

sed '/foo/{g;a\
bar
}'
Run Code Online (Sandbox Code Playgroud)

您需要在输入行之后添加换行符。如果您想要多行,请引用换行符:

sed '/foo/{g;a\
bar\
xyzzy
}'
Run Code Online (Sandbox Code Playgroud)

这可以追溯到 的根源sed,即ed