awk匹配两个文件,并用列名和值输出差异

awk匹配两个文件,并用列名和值输出差异,awk,gawk,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

我想用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)
        }

        }
        }'

啊,这也适用于更多行

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}
文件2

输出


您也可以使用diff来实现这一点。diff-y file1 file2>输出您的实际输入管道是否被分隔?每个文件是否包含多行?请澄清你的问题。是的,我的原始文件是以管道分隔的
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}
1,2,3,4,5,6
6,5,4,3,2,1
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