【发布时间】:2015-07-15 17:13:53
【问题描述】:
我有两个文件:一个每行一个单词,另一个有 3 个;它们看起来像这样:
列表文件:
Gene1
Gene2
Gene3
Gene4
主文件:
Gene8 Gene3 2.1
Gene10 Gene5 3
Gene1 Gene20 2.1
Gene3 Gene2 3.3
Gene48 Gene95 2
所以我想要的是使用列表文件来搜索和提取主文件中与列表匹配的行并将它们写入第三个新文件中。所以期望的输出是:
新文件:
Gene8 Gene3 2.1
Gene1 Gene20 2.1
Gene3 Gene2 3.3
我曾尝试使用正则表达式来使用 re.search,但我似乎并没有得到正确的结果,因为它总是在匹配的情况下写入整个文档,而不是单独的匹配行。
我尝试加载文件并将它们转换为字符串并使用双 for 循环,但看起来它是逐字匹配而不是逐字匹配,这使得输出文件很难管理。
是的,我看到了Use Python to search lines of file for list entries 的帖子,但我无法使其正常工作,并且生成的文件还需要更多格式,这使过程变得复杂,而且我似乎丢失了一些信息(列表文件有数千个条目和主文件是几十万行,所以不容易跟踪)。
我来找你,因为我知道应该有一种更高效、更简单的方法,因为它需要运行多次
【问题讨论】:
-
与您的 RAM 相比,列表文件有多大?
-
grep -f ListFile MasterFile > NewFile怎么样? (ListFile每行末尾加一个空格,避免匹配Gene10、Gene20或Gene48) -
您可以在每行末尾添加一个空格
sed 's/$/ /' oldfile > newfile -
@NightShadeQueen Mmm 6k 长,4GB RAM
-
@timrau 是的,有人告诉我 grep 会很简单,虽然我没有 UNIX 计算机的访问权限,所以我认为如果它在 UNIX 中足够简单,那么应该有一个足够简单的解决方案蟒蛇