我有两个文件,其中 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
) 替换为相应数组的内容。