使用awk,有条件地打印基于键的默认值,第二个文件中不存在的值

Using awk, conditionally print default value based on key,value not existing in second file

这是一个变体

这个问题与上面链接的问题不同的原因是这个问题处理了几个额外的案例。

data.txt 包含一些数据:

A;1
B;2
C;3
A;4

keys.txt 包含 "key,value" 对,但是缺少 C 的键值对:

A;60
B;50
D;30

期望的输出

A;1;60
B;2;50
C;3;1
A;4;60

对于所有缺失的 "key,value" 对,将默认值 1 添加到这些行。还应该能够处理 keys.txt 中的 "key,value" 对,它在 data.txt 中没有相应的键(例如本例中的 D;30)。

awk 救援!

与相关 相比 在过滤器中删除并用条件替换最后一个字段。

$ awk 'BEGIN   {FS=OFS=";"}
       NR==FNR {a[]=; next}
               {print [=10=],( in a)?a[]:1}' file2 file1

A;1;60
B;2;50
C;3;1
A;4;60