使用 sed 我想替换第一个匹配的文本块

使用 sed 我想替换第一个匹配的文本块

我有一个包含数百行的脚本,而我的搜索和替换命令可以工作并在多个位置删除它。

要替换的文本位于另一个文件中,我的搜索和替换工作完美,但不幸的是我只想替换块文本的第一个实例。

ORIGINAL_FILE TEXT_FILE NEW_FILE

将 RECOMMENDED 和 STATIC 之间的所有文本替换为 TEXT_FILE 中的内容

sed -n -e "1,/RECOMMENDED/ p" -e "/STATIC/,$ p" -e "/RECOMMENDED/ r $TEXT_FILE" $ORIGINAL_FILE >$NEW_FILE

正如我所说,这可行,但有多个位置可以使用 RECOMMENDED 和 STATIC,而我只想更改第一个实例。

任何帮助是极大的赞赏

答案1

如果你这样做:

sed -n -e '1,/RECOMMENDED/ p' \
       -e '/STATIC/,$ {p;d;}' \
       -e "/RECOMMENDED/ r $TEXT_FILE" < "$ORIGINAL_FILE" > "$NEW_FILE"

然后/RECOMMENDED/在行匹配之后将不会匹配,/STATIC/因为我们d打印后删除它们。

相关内容