我正在寻找一种有效的方法来跨多个文件执行大量(比如 100 个)查找和替换操作。通过查找和替换,我的意思是一个简单的替换(例如在 sed 或 vim 语法中,这将 s/cow/pig AND s/fish/bird AND s/cat/dog ...所有这些,对于所有匹配的文件)。
也许 sed 是最好的选择,但我想保持开放式,因为我怀疑可能有更有效的解决方案。
我正在寻找一种有效的方法来跨多个文件执行大量(比如 100 个)查找和替换操作。通过查找和替换,我的意思是一个简单的替换(例如在 sed 或 vim 语法中,这将 s/cow/pig AND s/fish/bird AND s/cat/dog ...所有这些,对于所有匹配的文件)。
也许 sed 是最好的选择,但我想保持开放式,因为我怀疑可能有更有效的解决方案。
这个问题有点模糊,有很多方法可以做到。对于跨多个文件的多次替换,您可以sed
在循环中使用。
以下方法需要两组文件。包含需要替换的单词的文件和包含它们的替换的文件。
您可以读取文件并执行sed
操作。像这样的东西:
while read -r substitute && read -r replacement <&3; do
sed -i "s/ "$substitute" / "$replacement" /g" *.txt
done <substitute.text 3<replacement.text
注意那*.txt
是glob
传递多个文件。此外,还有一个-i
选项传递给sed
它进行文件内替换。如果您正在玩弄不同的方法,我不会推荐它。您可以-i"bak"
用来备份原始文件。
就像我之前说的,这只是一个让球滚起来的建议。