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