我正在尝试使用join将列添加到大约4.5M行的文件中。文件按其第一列排序。文件1的第一列中的所有数字都在文件2的第一列中。当我使用“join FILE1 FILE2> output”时,它适用于前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
EDIT 以字典格式排序适用于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
答案 0 :(得分:4)
您的文件以数字方式排序,但join
期望它们按字典顺序排序(1 <10 <2 <200 <3)。使用join <(sort FILE1) <(sort FILE2)
。但是(正如评论中所建议的那样)确实考虑使用数据库。