我正在寻找一种有效的方法来跨多个文件执行大量(比方说100)的查找和替换操作。通过查找和替换,我的意思是一个简单的替换(例如在sed或vim语法中,将s / cow / pig AND s / fish / bird AND s / cat / dog ...所有这些,对于所有匹配的文件)。
也许sed是最好的选择,但我想让它保持开放,因为我怀疑可能有更高效的解决方案。
答案 0 :(得分:0)
问题有点模糊,有很多方法可以做到。对于跨多个文件的多次替换,您可以在循环中使用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
的{{1}}选项进行文件内替换。如果你用不同的方法玩弄,我不会推荐它。您可以使用sed
备份原始文件。
正如我之前所说,这只是一个让球滚动的建议。