AWK - END 语句中的 3 for 循环不是期望的结果

AWK - 3 for loops in END statement not desired result

AWK 新手。我有一个包含以下内容的文件:

FirstName,LastName,Email,ID,Number,IDToBeMatched
John,Smith,js@.com,js30,4,kt78
George,Haynes,gh@.com,gh67,3,re201
Mary,Dewar,md@.com,md009,4,js30
Kevin,Pan,kp@.com,kp41,2,md009
,,,,,ti10
,,,,,qwe909
,,,,,md009
,,,,,kor28
,,,,,gh67

想法是检查 header ID 下面的任何字段是否与 IDToBeMatched 下面的任何字段匹配,以及是否匹配以打印整个记录但最后一个字段(即 IDToBeMatched) .所以我的最终输出应该是这样的:

FirstName,LastName,Email,ID,Number
John,Smith,js@.com,js30,4
George,Haynes,gh@.com,gh67,3
Mary,Dewar,md@.com,md009,4

到目前为止我的代码

    awk 'BEGIN{
        FS=OFS=",";SUBSEP=",";
}

{
      # all[,,,,]
        a[]++;
        b[]++;
}

END{ #for(k in all){
    for(i in a){
       for(j in b){
           if(i==j){
              print i #k
                    }
                   }       
                }
    #}
}' inputfile

这只打印匹配项。但是,如果我尝试通过取消注释上述脚本中的行来引入另一个循环,以便为匹配字段设置整行,事情就会变得一团糟。我明白为什么,但我找不到解决方案。我想引入一个 next 语句,但在 END 中不允许这样做。我的 AWK 默认为 GAWK,我更喜欢 (G)AWK 解决方案。

提前致谢。

最后一个字段有更多记录,因为它是来自 ID "pool" 的 copied/pasted,而 ID "pool" 不一定具有与其粘贴的文件相同的记录数。

$ awk -F, 'NR==FNR{a[];next} (FNR==1)||( in a){sub(/,[^,]+$/,"");print}' file file
FirstName,LastName,Email,ID,Number
John,Smith,js@.com,js30,4
George,Haynes,gh@.com,gh67,3
Mary,Dewar,md@.com,md009,4