sed + 删除两个匹配模式之间的所有行,然后添加一个单词作为 x=yes

sed + 删除两个匹配模式之间的所有行,然后添加一个单词作为 x=yes

这里是脚本的例子

当我在两个匹配模式之间成功删除时(第一个是cat <<EOF | more,第二个是read x

剧本

#!/bin/sh

cat <<EOF | more

.
.
.
.


EOF

echo -n "Do you agree with the License? [yes/no] "
read x

.
.
.

我的 sed 命令

sed -i '/^cat <<EOF | more/,/^\read x/d' test.sh

现在我想添加 sed 的功能来添加参数 x=yes 插入所有删除行,如上所述

是否可以在我的 sed 命令中添加此功能?

预期结果示例

#!/bin/sh

x=yes

答案1

您可以使用apend 命令追加文本:

sed -e '/^cat <<EOF | more/ax=yes' -e '//,/^\read x/d' 

至少对于 GNU 来说sed,即使该行本身被删除,它也会被执行。您只想将其附加一次,因此只需使用 的第一个地址a和 的范围d。空表达式重复前一个表达式。

相关内容