sed 什么时候需要`-e`?

Tim*_*Tim 1 sed

我正在阅读/sf/answers/700725511/,并且-e对 sed的选项有疑问。

如果我是正确的,-e则用于在内联 sed 命令之前。但是我们可以指定一个不带-e. 例如,以下两个对我来说是一样的:

$ echo foo | sed  's/foo/bar/g'
bar

$ echo foo | sed -e 's/foo/bar/g'
bar
Run Code Online (Sandbox Code Playgroud)

它不像-f需要指定一个sed脚本。我们什么时候需要-e?在开头给出的链接中的特定情况下,我们为什么需要-e

谢谢。

roa*_*ima 5

这在 sed ( man sed)的手册页中得到了回答

-e script,--expression=script将脚本添加到要执行的命令中

如果没有-e, --expression[...] 选项被给出,那么第一个非选项参数被作为sed要解释的脚本。所有剩余的参数都是输入文件的名称;如果未指定输入文件,则读取标准输入。

因此,如果您只有一个参数,sed则将其视为sed脚本。如果您有多个参数,则应使用-e--expression确定哪个参数是sed脚本。

在您的具体示例的情况下,这两种选择是同义词。