这个 sed 命令有什么问题?

这个 sed 命令有什么问题?

该命令运行良好:

$ 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

相关内容