我有两个不同长度的文件,但都有3个制表符分隔的列。File2的行数为5000000000,File1的行数为2000000:
文件1:
abc foo bar
lmn potato rst
lmp tomato asd
文件2:
123 asdasc dad
032 foo 2134
123 linkin 9123
42 cads asd
45654 tomato 12123
我需要使用第二列作为匹配两个文件的键,如果第二列上有匹配项,则从File1和File2提取行
fout = open('outfile', 'w')
with open('file1', 'r') as f1, open('file2', 'r') as f2:
file2_keys = [i.split('\t')[1] for i in f2]
for line in f1:
if line.split('\t')[1] in file2_keys:
print>>fout, line
但这只给了我文件1中的一行。你知道吗
所需输出应为
排水口2:
032 foo 2134
45654 tomato 12123
排水口1:
abc foo bar
lmp tomato asd
在unix中有没有一种有效的方法?如何才能有效地做到这一点?你知道吗
你可以利用
awk
。你知道吗将从
File1
生成所需的输出:同样地
将从
File2
产生所需的输出:有效地?使用0xDeDeBrad建议的^ {CD1>}或坚持C++:
输出
由于您添加了一个python标记并在python中进行了尝试,下面是python的实现:
相关问题 更多 >
编程相关推荐