如何使用 Bash 替换给定行后所有出现的模式?

How to replace a pattern for all occurrences after a given line using Bash?

我一直在使用 sed -i "" "s/pattern/replacement/g" file.txt 来替换整个文件中的模式,但我的目标是对第三行之后的所有匹配项进行替换。我设法做到了,

sed -n -e '3,$p' file.txt > aux
cat aux | sed "s/pattern/replacement/gI" > file.txt ,

但我想知道是否有更快的方法,最好不使用辅助文件 (aux)。

替换前可以使用“地址范围”:

sed -e '3,$ s/pattern/replacement/gI'

如果要删除前两行,可以使用tail

sed ... | tail -n +3

或者您可以告诉 sed 删除它们:

sed -e '1,2d' -e '3,$ s/pattern/replacement/gI'