检查文本文件中的值

检查文本文件中的值

是否有一种简单的方法来检查文件(文件 2)第二列中的值是否存在于另一个文件(文件 1)第二列中,例如通过在相关行旁边打印一个星号?如果可能的话使用awk。

文件1

A   1,2,3,4 
B   15,16,17

文件2

A   3
B   18

预期输出:文件 3

A   1,2,3,4     *
B   15,16,17         

编辑 如果文件 2 如下所示怎么办:

A    3,8
B    18,19

但预期输出保持不变?

答案1

尝试这个:

$ awk '
   FNR == NR {
       a[$1] = $2;next
   }
   {
       split(a[$1],b,",");
       for (i in b) {
           if ($2 == b[i]) {
               printf("%s %s\t*\n",$1,a[$1]);
               next;
           }
       }
       print $1,a[$1];
   }
' file1 file2 
A 1,2,3,4   *
B 15,16,17

更新

使用新输入,尝试:

$ awk '
    FNR == NR {
        a[$1] = $2;
        next;
    }
    {
        split($2,b,",");
        split(a[$1],c,",");
        for (i in b) {
            if (b[i] in c) {
                printf("%s %s\t*\n",$1,a[$1]);next;
            }}
                print $1, a[$1];
     }
' file1 file2

相关内容