2

我正在尝试使用 join 将列添加到大约 450 万行的文件中。这些文件按它们的第一列排序。文件 1 第一列中的所有数字都在文件 2 的第一列中。当我使用“加入 FILE1 FILE2 > 输出”时,它适用于前 1000 行左右,然后停止...

我不接受加入的想法(程序似乎永远无法正常工作)并愿意以其他方式加入这些文件。我尝试了 grep,但是通过 grep 对 4*10^6 记录执行此操作非常慢。以下是我正在使用的数据示例。

FILE 1
964 0 0.0 0.0 0.0 0.0 1.0 -
965 0 0.0 1.0 0.0 0.0 0.0 -
966 0 0.0 0.0 0.0 0.0 1.0 -
967 0 0.0 0.0 0.0 0.0 1.0 -
968 0 0.0 1.0 0.0 0.0 0.0 -
969 0 0.0 0.0 0.0 1.0 0.0 -
970 0 0.0 0.0 1.0 0.0 0.0 -
971 0 0.0 1.0 0.0 0.0 0.0 -
1075 3 4.0 0.0 0.0 0.0 0.0 -
1076 0 4.0 0.0 0.0 0.0 0.0 -
1077 0 0.0 0.0 4.0 0.0 0.0 -
1078 0 0.0 0.0 0.0 4.0 0.0 -


File 2
964 T
965 C
966 T
967 G
968 C
969 T
970 G
971 C
972 G
973 G
974 T
975 G
976 C
977 T
978 G
979 G
980 C
981 T
982 G

output (Last few lines)
965 0 0.0 1.0 0.0 0.0 0.0 - C
966 0 0.0 0.0 0.0 0.0 1.0 - T
967 0 0.0 0.0 0.0 0.0 1.0 - G
968 0 0.0 1.0 0.0 0.0 0.0 - C
969 0 0.0 0.0 0.0 1.0 0.0 - T
970 0 0.0 0.0 1.0 0.0 0.0 - G
971 0 0.0 1.0 0.0 0.0 0.0 - C
9990 0 0.0 0.0 0.0 0.0 0.0 - T
9991 0 0.0 0.0 0.0 0.0 0.0 - C

编辑字典格式的排序适用于 463835 之后的所有记录。我认为这是因为它对输入文件的排序不同,可能是由于其他列?

FILE 1 
466630 0 0.0 0.0 0.0 0.0 0.0 -
46663 0 0.0 0.0 0.0 3.0 0.0 -
466631 0 0.0 0.0 0.0 0.0 0.0 -

FILE 2
466639 C
46663 A
466640 G
4

1 回答 1

4

您的文件按数字排序,但join希望它们按字典顺序排序 (1 < 10 < 2 < 200 < 3)。使用join <(sort FILE1) <(sort FILE2). 但是(如评论中所建议的)确实考虑使用数据库。

于 2013-05-03T20:53:38.530 回答