使用unix文件中的另一个字符串替换文件中的一组字符串

时间:2014-04-25 06:50:49

标签: unix

我有一个参数名称,如

PAR =" DBS_OUT"

我有一个文本文件(Repla.txt),其值低于:

DB_TECH

DB_ADMIN

DB_TERA

DB_APS

文件中的这些值可以延迟,但参数值将保持不变。

现在我有一些Unix shell脚本,我需要找到文件中提到的所有这些值(Repla.txt) 并用参数(PAR)替换它们。由于Repla.txt中的值未修复,因此无法使用sed命令。例如: sed&#39 / s / old / new / g' input.txt> output.txt的

任何人都可以帮助我。 谢谢

2 个答案:

答案 0 :(得分:0)

我不确定我是否完全理解您要执行的操作,但如果您尝试将Repla.txt中包含的值用作要在其他文件中替换的字符串,则以下bash行将做你想做的事:

PAR="DBS_OUT"; for FIND in `cat Repla.txt`; do $( find /path/to/files -name 'test?.txt' -exec sed -i "s/$FIND/$PAR/g" '{}' \;); done;

它将在dir(和subdirs)/ path / to / files中匹配test?.txt的所有文件中用字符串DBS_OUT替换Repla.txt中包含的字符串。您将需要了解查找的工作原理。

另请注意,我没有告诉sed进行备份,您可能希望在执行某些测试文件之前对其进行测试。希望你也可以在源代码控制中使用你的脚本,所以如果你搞砸了它就没那么大了。

答案 1 :(得分:0)

我希望你只用大写字母替换。

sed' s / DBS_ [A-Z] * / DBS_OUT / g' repla.txt>目标文件

sed' s / DBS_ [A-Z] * / DBS_OUT / g' repla.txt