如何使用 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'
我一直在使用 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'