多个 sed 命令,无需创建单独的脚本,也无需使用 -e

Multiple sed commands without create a separate script, and without use -e

我正在使用 sh 编写脚本,我想替换文件的一部分。我正在使用 sed,因为它很容易进行替换。

现在我注意到,使用 sh 时,我无法将 sed 命令包装在多行中,就像我在脚本中所做的那样。所以我使用了 sed -e 选项,并在每行末尾添加了一个 \。

是否有更有效的方法来编写一系列必须在文件上执行的 sed 命令,并将输出保存到另一个文件?

或者唯一的选择是编写脚本并使用 -f 标志调用它,或者使用 -c 标志和 \?

制作多行

使用单引号将 sed 命令括起来:

sed '
    s/this/that/
    s/foo/bar/
    # and so on
' file

处理变量需要跳出单引号:

sed '
    s/this/'"$variable"'/
    s/foo/bar/
    # and so on
' file