Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix AWK-查找文件中的查找数据并打印“;“成功”;或;“失败”;_Unix_Awk - Fatal编程技术网

Unix 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

在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.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如果您认为答案令人满意,您可以接受答案,以便其他人知道此问题得到了回答。