如何在 fileA 上找到一个字符串,从该字符串中选择一些文本并替换 fileB 上的一个字符串?

Ray*_*cos 2 scripting sed text-processing

我有一个文件A和一个文件B。在fileA 中,我希望我的脚本找到特定的 stringA;然后,使用sed命令仅将 stringA 的一部分粘贴到文件 B 上(替换为 fileB 中特定 stringB 的一部分)。

例如。

文件A
阿什杰卡什杰德
阿吉克达杰斯德
推荐权重:0.546(这是感兴趣的字符串)

文件B
阿斯达什达
克贾什贾斯德
WGHT       0.495(这是FILE BI需要替换的部分)

我只想选择 stringA (0.546) 的文本并将 fileB 上的 0.495 替换为 0.546,因此,新的 fileB 将是:

新文件B
阿斯达什达
克贾什贾斯德
WGHT 0.546

使用 onlysed对我不起作用,因为它用同一文件中的 stringB 替换了 stringA,但我的 stringsA 和 B 来自不同的文件。此外,它们是“随机”生成的(通过程序)。

ter*_*don 5

您实际上可以使用sed(和另一个工具来匹配第一个文件)。例如:

$ sed -E "s/(WGHT\s*).*/\1$(grep -oP 'Recommended Weight: \K[0-9.]+' fileA)/" fileB 
asdajskdha
kjashdjahsd
WGHT 0.546
Run Code Online (Sandbox Code Playgroud)

或者先将它保存在一个变量中:

$ wght=$(sed -En 's/Recommended Weight: *([0-9.]+)/\1/p' fileA)
$ sed -E "s/(WGHT\s*).*/\1$wght/" fileB
asdajskdha
kjashdjahsd
WGHT 0.546 
Run Code Online (Sandbox Code Playgroud)