此命令运行良好:
$ 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)
它出什么问题了?
中的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
。