Awk

在一個文件中查找完整文本並替換另一個文件中的字元串

  • October 23, 2019

我在 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

請注意,每次其他程序完成時, **Source_file.txt的值都會動態變化。**因此,目標文件每次都必須正確更新$$API_JOB_ID

我需要 Unix 命令來解決這個問題。

好的,這有點,但它應該可以工作:

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我們需要了解這一點。

引用自:https://unix.stackexchange.com/questions/548111