![](/img/trans.png)
[英]compare two columns in awk and print values from lookup files into output file
[英]AWK - Lookup data in lookup file and Print "success" or "Failure"
无法确定我需要在 AWK 中实现的目标。 我有2个文件:
数据文件:-
XYZ:ABC:tab1:join_check:abc111:abc.tab1234
XYZ:ABC:tab2:join_check:abc112:abc.tab1234
XYZ:ABC:tab3:join_check:abc113:abc.tab1234
XYZ:NON-ABC:tab1:join_check:abc123:abc.tab1234
XYZ:NON-ABC:tab2:join_check:abc123:abc.tab1234
HQL:ABC:tab1:join_check:abc123:abc.tab1234
HQL:NON-ABC:tab2:join_check:abc123:abc.tab1234
HQL:NON-ABC:tab3:join_check:abc123:abc.tab1234
查找文件:-
XYZ:ABC:tab1
XYZ:ABC:tab2
XYZ:NON-ABC:tab1
HQL:ABC:tab1
HQL:NON-ABC:tab2
所需的输出:-
XYZ:ABC:tab1:join_check:abc111:abc.tab1234:Verified
XYZ:ABC:tab2:join_check:abc112:abc.tab1234:Verified
XYZ:ABC:tab3:join_check:abc113:abc.tab1234:Failed
XYZ:NON-ABC:tab1:join_check:abc123:abc.tab1234:Verified
XYZ:NON-ABC:tab2:join_check:abc123:abc.tab1234:Failed
HQL:ABC:tab1:join_check:abc123:abc.tab1234:Verified
HQL:NON-ABC:tab2:join_check:abc123:abc.tab1234:Verified
HQL:NON-ABC:tab3:join_check:abc123:abc.tab1234:Failed
使用数据文件中的前 3 个字段,需要在 Lookup 文件中查找相同的三个字段。 如果找到记录/条目(所有三个字段都匹配),则需要从数据文件中打印行并附加“已验证”,否则如果未找到记录/条目,则需要从数据文件中打印行并附加“失败”。
非常感谢这方面的任何帮助
awk -F: -v OFS=: 'NR==FNR{lookup[$1":"$2":"$3]=1; next} {print $0, (lookup[$1":"$2":"$3] ? "Verified" : "Failed")}' lookup data
首先我们有两个代码块,第一个只为查找文件(第一个文件)执行,第二个只为数据文件(第二个文件)执行。 这是通过检查 FNR(文件记录号)和 NR(总记录号)来完成的。 这只对第一个文件是一样的,所以 NR==FRN,然后我们使用next
跳转到下一行,以防止对第一个文件执行第二个块。
然后对于第二个文件,我们在查找关联数组中查找树字段,并使用三元运算符选择“已验证”(如果找到)或“失败”(如果未找到)。
然后我们用这个新字段打印整行 $0。 我们设置字段分隔符和输出字段分隔符。 与-F: -v OFS=:
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.