在一个文件中查找完整文本并替换另一个文件中的字符串

在一个文件中查找完整文本并替换另一个文件中的字符串

我在 Source_file.txt 中有这样的数据

5daee1ef55297ba2fac78933

并且在Target_file.txt中有

$$API_JOB_ID=5daed2a255297ba2fac78930
$$API_JOB_RES=succeeded
$$API_SERVER=awsabc1108

现在,我需要替换Source_file.txt中的值Target_file.txt

输出应如下所示

$$API_JOB_ID=5daee1ef55297ba2fac78933
$$API_JOB_RES=succeeded
$$API_SERVER=awsabc1108

请注意源文件.txt每次其他进程完成时,值都会动态变化。因此,每次都必须使用正确的内容更新目标文件$$API_JOB_ID

我需要 Unix 命令来解决这个问题。

答案1

好吧,这是一种肮脏的,但它应该有效:

sed 's/\$\$API_JOB_ID=.*$/\$\$API_JOB_ID='"$(cat Source_file.txt)"'/' Target_file.txt

如果您想直接编辑目标文件而不是将修改后的版本打印到终端,请使用以下命令:

sed -i 's/\$\$API_JOB_ID=.*$/\$\$API_JOB_ID='"$(cat Source_file.txt)"'/' Target_file.txt

它是肮脏的,主要是因为我正在做太多关于文件格式的假设以及命令的成功很大程度上取决于这些假设;如果我们想这样做正确的,我们需要确切地知道我们可以做出什么假设,但你的描述有点模糊。如果您认为这可能会失败,因为您的文件中可能有其他格式或更复杂的结构Source_file.txtTarget_file.txt我们需要了解这一点。

相关内容