文件比较

文件比较

我有两个文件,其中 FILE1 包含很多行,FILE2 包含 KEY VALUE 参数。我需要将 FILE2 与 FILE1 进行比较,如果存在匹配,则 FILE1 中的相应单词应替换为 FILE2 中的下一列。

例子:

文件1:

<SOME YAML CODE
-------------->
PARM1
PARM2
PARM3
PARM4
<END OF YAML CODE
---------------->

文件2:

PARM1 mmddyy
PARM2 hhmmss
PARM3 awsid
PARM4 cc

因此,对于 FILE1 中 FILE2 中的每个匹配项,FILE1 中的相应单词应替换为 FILE2 中的第二列。所以期望的输出应该是这样的:

<SOME YAML CODE
-------------->
mmddyy
hhmmss
awsid
cc
<END OF YAML CODE
---------------->

我尝试使用有限的 sed 但没有达到预期的输出。

感谢您的时间和支持

答案1

您可以使用awk

awk '
    NR==FNR{k[$1]=$2;}
    NR!=FNR{if($1 in k){$0=k[$1]};print}
' file2 file1

保存来自 的字段数组file2,如果在 中找到file1,则将行 ( $0) 替换为相应数组的内容。

相关内容