如何在 GNU sed 中结束 `i` 命令?
How to end the `i` command in 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
终止该命令的正确方法是什么?
您可以在单个命令中使用多个 -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
我正在尝试使用 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
终止该命令的正确方法是什么?
您可以在单个命令中使用多个 -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