Bash 多次递归查找和替换

Bash 多次递归查找和替换,bash,text,replace,substitution,Bash,Text,Replace,Substitution,我正在寻找一种高效的方法来跨多个文件执行大量(比如100)的查找和替换操作。所谓查找和替换,我指的是一个简单的替换(例如,在sed或vim语法中,将s/cow/pig、s/fish/bird和s/cat/dog……所有这些,用于所有匹配的文件) 也许sed是最好的选择,但我想让它不受限制,因为我怀疑可能会有更有效的解决方案。这个问题有点模糊,有很多方法可以做到这一点。对于跨多个文件的多个替换,可以在循环中使用sed 以下方法需要两组文件。包含需要替换的单词的文件,以及按顺序包含替换单词的文件 您

我正在寻找一种高效的方法来跨多个文件执行大量(比如100)的查找和替换操作。所谓查找和替换,我指的是一个简单的替换(例如,在sed或vim语法中,将s/cow/pig、s/fish/bird和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

while read-r replacement&&read-r replacement谢谢。如果问题含糊不清,那是因为我在寻找最有效的解决方案,因为它可以带来数量级的改进,即从几小时到几分钟。@mahemoff当然,我同意。:)