在awk的File2中查找在File1中的列

时间:2019-01-03 07:01:30

标签: unix awk ksh

我有2个文件,如下所示

File1
USA,China,India,Canada

File2
Iran|XXXXXX|Iranian
Iraq|YYYYYY|Iraquian
Saudi|ZZZZZ|Saudi is a Rich Country
USA|AAAAAA|USA is United States of America.
India|IIII|India got freedom from British.
Scot|SSSSS|Canada Mexio.

如何使用awk读取File1中的值并检查它是否与File2中的第一个定界字符串匹配?我已经尝试过了,但是我无法实现。请帮忙。

对于上述输入,输出应为

USA Matches
China Not Matched
India Matches
Canada Not Matches

2 个答案:

答案 0 :(得分:3)

请您尝试以下。

awk 'FNR==NR{a[$1];next} {for(i=1;i<=NF;i++){if($i in a){print $i,"Matches"} else {print $i,"Not Matches."}}}' FS="|" Input_file2 FS="," Input_file1

答案 1 :(得分:1)

您也可以尝试Perl

$ cat vinoth1
USA,China,India,Canada
$ cat vinoth2
Iran|XXXXXX|Iranian
Iraq|YYYYYY|Iraquian
Saudi|ZZZZZ|Saudi is a Rich Country
USA|AAAAAA|USA is United States of America.
India|IIII|India got freedom from British.
Scot|SSSSS|Canada Mexio.
$ perl -F, -lane ' BEGIN { $x=qx(cat vinoth2) } print $_,$x=~/^$_/m ? " matches" : " not matches" for(@F) ' vinoth1
USA matches
China not matches
India matches
Canada not matches