awk匹配两个文件并输出与列名称的差异&值

时间:2015-04-29 10:24:33

标签: awk gawk

我想用awk比较两个文件并输出不匹配的列。

到目前为止我一直在尝试

awk -F',' 'FNR==NR{
        for(i=0;i<=NF; i++){
        a[i];

        }next;
        }
        for (i=1;i<=NF;i++){
        if($i in a){
        {printf("Match: %s , col-> %d" $i,i-1)}
        else

        {printf("UN- Match: %s , col-> %d" $i,i-1)
        }

        }
        }'

但是这个没用。

这就是我需要的。

Example:
file 1
1,2,3,4,5,6


file 2
1,2,5,4,5,7

Output

col 3 -> 3,5
col 6 -> 6,7

1 个答案:

答案 0 :(得分:0)

Awk,也适用于更多行

awk -F, 'NR==FNR{for(i=1;i<=NF;i++)a[NR,i]=$i;next}
{for(i=1;i<=NF;i++)if(a[FNR,i]!=$i)print "Row:"FNR,"Col:"i"->",a[FNR,i]","$i}' file{1,2}

实施例

输入

File1中

1,2,3,4,5,6
6,5,4,3,2,1

文件2

1,2,5,4,5,7
6,4,4,3,1,1

输出

Row:1 Col:3-> 3,5
Row:1 Col:6-> 6,7
Row:2 Col:2-> 5,4
Row:2 Col:5-> 2,1