Unix AWK-查找文件中的查找数据并打印“;“成功”;或;“失败”;
在AWK中我很难找到我需要达到的目标。我有两个文件: 数据文件:-Unix AWK-查找文件中的查找数据并打印“;“成功”;或;“失败”;,unix,awk,Unix,Awk,在AWK中我很难找到我需要达到的目标。我有两个文件: 数据文件:- 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.t
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个字段,需要对同三个字段的查找文件进行查找。如果找到记录/条目(所有三个字段都匹配),则需要打印数据文件中的行并附加“已验证”,否则如果未找到记录/条目,则需要打印数据文件中的行并附加“失败”
非常感谢您在这方面提供的任何帮助
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=:
请在您的问题中添加代码形式的努力,因为这是非常值得鼓励的。@NaveenThimmappa如果您认为答案令人满意,您可以接受答案,以便其他人知道此问题得到了回答。