我有 2 个文件
file1
a^b=-123
a^3=-124
c^b=-129
a^b=-130
和文件2
a^b=-523
a^3=-524
a^b=-530
我想使用'='作为分隔符查找密钥并获得以下输出
a^b^-123^-523
a^b^-130^-530
a^3^-124^-524
当没有重复键时,在 awk 映射第一个文件并循环第二个文件时很容易做到这一点,但是,对于重复项,它有点困难。我试过这样的事情:
awk -F"=" '
FNR == NR {
arr[$1 "^" $2] = $2;
next;
}
FNR < NR {
for (i in arr) {
match(i, , /^(.*\^.*)\^([-0-9]*)$/, , ar);
if ($1 == ar[1]) {
if ($2 in load == 0) {
if (ar[2] in l2 == 0) {
l2[ar[2]] = ar[2];
load[$2] = $2;
print i "^" $2
}
}
}
}
}
' file1 file2
这工作得很好,但是,毫不奇怪它非常慢。在一个包含大约 600K 记录的文件上,它运行了 4 个小时。
有没有更好更有效的方法在一行 awk 或 perl 中做到这一点。如果可能的话,一个班轮会很有帮助。
谢谢。