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

用unix文件中的另一个字符串替换文件中的一组字符串,unix,Unix,我有一个参数名,比如 PAR=DBS\U OUT 我有一个文本fileRepla.txt,其中包含以下值: 德布鲁科技公司 数据库管理 德布特拉 DB_APS 文件中的这些值可以延迟,但参数值将保持不变 现在我有了一些Unix shell脚本,需要在其中找到文件repa.txt中提到的所有此类值 并用参数Par替换它们。由于repa.txt中的值不是固定的,因此我无法使用sed命令。例如: sed's/old/new/g'input.txt>output.txt 谁能帮帮我吗。 谢谢我不确定我是

我有一个参数名,比如

PAR=DBS\U OUT

我有一个文本fileRepla.txt,其中包含以下值:

德布鲁科技公司

数据库管理

德布特拉

DB_APS

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

现在我有了一些Unix shell脚本,需要在其中找到文件repa.txt中提到的所有此类值 并用参数Par替换它们。由于repa.txt中的值不是固定的,因此我无法使用sed命令。例如: sed's/old/new/g'input.txt>output.txt

谁能帮帮我吗。
谢谢

我不确定我是否完全理解您试图执行的操作,但是如果您试图使用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;
它将把Repla.txt中包含的字符串替换为dir和subdirs/path/to/files中与test?.txt匹配的所有文件中的字符串DBS_OUT。您需要了解find是如何工作的


还要注意的是,我并没有告诉sed备份,在真正执行之前,您可能想在一些测试文件上测试一下。希望你的脚本也在源代码管理中,所以如果你把事情搞砸了,那也没什么大不了的。

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

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

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