1

我正在寻找一种有效的方法来跨多个文件执行大量(比如 100 个)查找和替换操作。通过查找和替换,我的意思是一个简单的替换(例如在 sed 或 vim 语法中,这将 s/cow/pig AND s/fish/bird AND s/cat/dog ...所有这些,对于所有匹配的文件)。

也许 sed 是最好的选择,但我想保持开放式,因为我怀疑可能有更有效的解决方案。

4

1 回答 1

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

注意那*.txtglob传递多个文件。此外,还有一个-i选项传递给sed它进行文件内替换。如果您正在玩弄不同的方法,我不会推荐它。您可以-i"bak"用来备份原始文件。

就像我之前说的,这只是一个让球滚起来的建议。

于 2013-05-31T02:26:56.097 回答