Perl 替换数百个文件中许多不同类型的字符串
在同一文件夹下的数百个文件中,我有大约50种不同类型的字符串要搜索和替换。我想将要替换的字符串放入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
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/;…;'文件
?祝你好运