该命令运行良好:
$ sed -e '/foo/{g; d}' myfile
但是这个有一个错误:
$ sed -e '/foo/{g; a bar}' myfile
sed: -e expression #1, char 0: unmatched `{'
它出什么问题了?
答案1
a
中的语句需要sed
实际的换行符 ( Cntl-j),而不是嵌入的回车符 ( Ctrl-m)。因此,真正让该a
语句发挥作用的唯一方法是:
sed '/foo/{g;a\
bar
}'
您需要在输入行之后添加换行符。如果您想要多行,请引用换行符:
sed '/foo/{g;a\
bar\
xyzzy
}'
这可以追溯到 的根源sed
,那就是ed
。