awk匹配两个文件并输出列名和值的差异
awk to match two files and output the difference with column name & value
我想用 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
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}
例子
输入
文件 1
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
我想用 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
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}
例子
输入
文件 1
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