如何在GNU sed中结束`i`命令?

时间:2019-06-28 10:04:43

标签: linux bash sed stream gnu-sed

我正在尝试使用sed对输入字符串进行多次替换和插入。

但是,我最近注意到插入命令i并没有像其他命令那样在;处终止,而是打印了其余的字符串。

$ sed "s/^foo/bar/; 1i foo foo foo; s/foo$/baz/;"

在以下输入上运行该命令时,

foo bar baz

我得到以下错误输出。

foo foo foo; s/foo$/baz/;
bar bar baz

终止该命令的正确方法是什么?

1 个答案:

答案 0 :(得分:3)

您可以在一个命令中使用多个-e分隔的查询:

sed -e 's/^foo/bar/' -e '1i foo foo foo' -e 's/foo$/baz/' <<< "foo bar baz"

请参见online sed demo。输出:

foo foo foo
bar bar baz