如何将大文件分成小块,然后使用该块文件与linux或R或python中的另一个文件进行比较

时间:2018-08-01 07:57:05

标签: python r shell

我有file-1,这是一个有990万行和8列的大文件。我有另一个文件2,具有330万行和9列。实际上,如果文件1的第2列与文件2的第2列匹配,我将从文件1中提取行。

我使用了以下代码

awk 'BEGIN { while ((getline<"file-1")>0) {REC[$2]=$0}} {print REC[$2]}' < file-2 > file-3

但是文件1有990万行,此代码没有给我任何输出。而如果将990万行拆分为10万行,则会得到输出。如果我用50万行将其拆分,则再无输出。

这是我的拆分命令

split -l 100000 -d file-1 smallfile- --additional-suffix=.txt

现在我需要帮助,这样我就可以将这些文件分成10万行的小块,并将所有小块运行到上述awk命令中,这将给我输出后缀以_split_file_100_thousand结尾的..等等,例如输出前10万个分割文件3_split_100_thousand 同样,对于990万行,它将为file3_split_9.9_million

我的示例文件1

A     B    C     D    E    F    G    H
chr1  1   0.5    0.6  0.7  0.7  0.9  10.0
chr1  2   0.5    0.6  0.11  0.7  0.9  10.0 
chr1  3   0.5    0.6  0.1  0.7  0.9  10.0
chr1  4   0.5    0.6  0.7  0.7  0.9  10.0

File2

A     B    C     D    E    F    G    H    I
chr1  3   0.1    0.2  0.3  0.7  0.9  10.0 19
chr1  4   0.100  0.3  0.7  0.7  0.9  10.0 19

File3

A     B    C     D    E    F    G    H
chr1  3   0.5    0.6  0.1  0.7  0.9  10.0
chr1  4   0.5    0.6  0.7  0.7  0.9  10.0

0 个答案:

没有答案