Perl 替换数百个文件中许多不同类型的字符串

Perl 替换数百个文件中许多不同类型的字符串,perl,sed,Perl,Sed,在同一文件夹下的数百个文件中,我有大约50种不同类型的字符串要搜索和替换。我想将要替换的字符串放入inputs.txt文件中,然后使用find和sed命令在许多文件中用“\u modify”替换每个输入字符串 下面是我想做的一个快速示例: 1) 保存在inputs.dat中要搜索的字符串: string1 string2 string3 string50 2) test1.txt和test2.txt目前是相同的 这是绳子 这是绳子 还有一件事 这是弦 这是string50 3

在同一文件夹下的数百个文件中,我有大约50种不同类型的字符串要搜索和替换。我想将要替换的字符串放入
inputs.txt
文件中,然后使用
find
sed
命令在许多文件中用“\u modify”替换每个输入字符串

下面是我想做的一个快速示例:

1) 保存在inputs.dat中要搜索的字符串:

  string1
  string2
  string3

  string50
2) test1.txt和test2.txt目前是相同的 这是绳子 这是绳子 还有一件事 这是弦 这是string50

3) 我尝试将所有sed命令链接在一起,以递归方式替换所有字符串,如下图所示,但如果字符串变得巨大,则需要做大量的工作。我认为perl+sed应该可以工作,但我还不知道如何将它们组合在一起。 $find-名称“*.txt”-打印| xargs sed-i的/^string1$/strng1_modify/g”

3) 我尝试了下面建议的sed脚本,但在bash中运行时出现了一些错误。似乎sed在处理多行时遇到了问题。
$sed#u program=$(sed's#.+#s/&/\&&u modify/g#'inputs.dat)

$find-f类-打印| xargs-0 sed-i“$sed_程序”


错误提示:“$sed:-e表达式#1,字符13:unterminated`s'命令”

我将获取输入文件并将其转换为sed脚本:

假设您的shell是bash/ksh/zsh,您可以执行以下操作:

sed_program=$( sed 's#.+#s/&/\&_modify/g#' inputs.txt )
find . -type f -print0 | xargs -0 sed -i "$sed_program"

显示您尝试过的内容以及遇到的困难。您是否知道可以在sed中将子cmd链接在一起,如
sed的/a/b/g;s/d/e/;…;'文件
?祝你好运