【发布时间】:2014-05-07 20:03:22
【问题描述】:
我想在第一列加入 2 个文件: 文件 1 包含 46395029 行,文件 2 包含 86510559。
file1.txt
>ID sequence
CJP75M1:393:C2T21ACXX:8:1101:2069:1997 1:N:0:_45 TAGTATTACGACG
CJP75M1:393:C2T21ACXX:8:1101:2711:1992 1:N:0:_65 TCCGAGGCCCTGTAATTGGAATGAGTAC
CJP75M1:393:C2T21ACXX:8:1101:3822:1989 1:N:0:_115 CCGGAGAGGGAGCCTGAGAAACGGCTACCAC
file2.txt
>ID Barcode
CJP75M1:393:C2T21ACXX:8:1101:2069:1997 1:N:0:_45 CTCG
CJP75M1:393:C2T21ACXX:8:1101:2711:1992 1:N:0:_65 CTAG
CJP75M1:393:C2T21ACXX:8:1101:3822:1989 1:N:0:_115 CTGG
我想将这两个文件合并到第一个列上:
>TAGTATTACGACG CTCG
TCCGAGGCCCTGTAATTGGAATGAGTAC CTAG
CCGGAGAGGGAGCCTGAGAAACGGCTACCAC CTGG
只需要 file1 中的行,因此结果文件应包含“仅”46395029 行。 我用 awk 做到了:
awk 'BEGIN {FS= "\t"; OFS="\t"} { while (getline < "file1.txt") { f[$1] = $2} {print $2, f[$1] }}' "file2.txt" | sed '1d' > result.txt
但它真的很长(运行 2 天)。我有一个 64 位 / 16Go RAM 的 linux debian(稳定)服务器
有什么想法吗? 谢谢
【问题讨论】:
-
文件中的“键”是否以某种方式排序?
-
好奇,为什么是java标签和C标签?
-
不,他们不是。事实上,在文件 2 中我有所有的 ID,而在文件 1 中这是一个子集
-
因为我愿意接受任何语言的任何建议!