我尝试编写一个脚本,用于比较基于第2列的2个大文件。每个文件包含大约1百万条记录。对于输出,我需要知道哪些记录在第2列上是常见的(存在于两个文件中)但在第1列中具有不同的值。这些文件是引用逗号分隔的值文件
File1_pair
20151026,1111
20141113,2222
20130102,3333
77777777,9999
File2_pair
20151026,1111
20203344,2222
50506677,3333
77777777,8888
Desired_output
20141113,2222,20203344
20130102,3333,50506677
我尝试修改下面的脚本,但无法正确使用。
awk 'FNR==NR { a[$0]; next } !($2) in a { c++ } END { print c }' file1_pair file2_pair`
答案 0 :(得分:1)
你有正确的想法,你只是在错误的领域上操作。
您需要保存数组中第一个文件的所有$2
值,然后检查第二个文件中针对该数组的$2
值。您还需要比较相应行中$1
的值。
这个awk脚本会这样做。
awk -F , -v OFS=, '
NR==FNR {
# Store the value of $1 under the $2 key in a
a[$2]=$1
next
}
# If $2 is in a (we've seen this value before) and
# if the value in the array (first file's $1 value) doesn't match this files $1 value
($2 in a) && (a[$2] != $1) {
# Print the original $1 value (from the array),$2,$1
print a[$2],$2,$1
}' file1_pair file2_pair