我有一个参数名称,如
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的
任何人都可以帮助我。 谢谢
答案 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 强>