我在 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.txt
,Target_file.txt
我们需要了解这一点。