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

时间:2017-05-23 15:37:37

标签: awk printing conditional default key-value

这是一个变种 Using awk how do I combine data in two files and substitute values from the second file to the first 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

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

1 个答案:

答案 0 :(得分:3)

awk救援!

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

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

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