【发布时间】:2014-03-11 18:32:38
【问题描述】:
我在同一个文件夹下的数百个文件中搜索和替换大约 50 种不同类型的字符串。我想将要替换的字符串放在inputs.txt 文件中,然后使用find 和sed 命令在很多文件中用“_modify”替换每个输入字符串。
这是我想要做的一个简单的例子:
1) 要搜索的字符串保存在inputs.dat中:
string1
string2
string3
string50
2)test1.txt 和 test2.txt 现在是相同的 这是字符串1 这是字符串2 这是别的东西 这是字符串3 这是字符串50
3) 我尝试将所有 sed 命令链接在一起,以递归方式替换所有字符串,如下所示,但如果字符串变得很大,则工作量很大。我认为 perl+sed 应该可以工作,但我还不知道如何将它们组合在一起。 $查找。 -name "*.txt" -print | xargs sed -i 's/^string1$/strng1_modify/g'
3) 我尝试了下面建议的 sed 脚本,但在 bash 中运行时出现了一些错误。看起来 sed 在处理多行时遇到了问题。
$sed_program=$(sed 's#.+#s/&/\&_modify/g#' inputs.dat)
$查找。 -type f -print | xargs -0 sed -i "$sed_program"
错误信息:“$sed: -e expression #1, char 13: unterminated `s' command”
【问题讨论】:
-
显示您尝试过的内容以及遇到问题的地方。
-
你知道你可以像
sed 's/a/b/g;s/d/e/;.....;' file这样在sed中链接子命令吗?祝你好运。