我有一个大型CSV文件,其中填充了数百万条不同的行,每行都有以下格式:
/resource/example
现在我还有一个.TTL文件,其中每一行可能具有完全相同的文本。现在,我想从包含与当前CSV文件相同的文本的.TTL文件中提取每一行到新的CSV文件中。
我认为这可以使用grep,但这是一个linux命令,我非常非常缺乏经验。是否可以在Windows中执行此操作?我可以编写一个Python脚本来比较这两个文件,但由于这两个文件都包含数百万行,我认为这些行几乎需要几天才能执行。任何人都可以指出我正确的方向如何做到这一点?
提前致谢! :)
编辑:
来自.TTL文件的示例行:
<nl.dbpedia.org/resource/Algoritme>; <purl.org/dc/terms/subject>; <nl.dbpedia.org/resource/Categorie:Algoritme>; .
当前CSV文件中的示例行:
/resource/algoritme
因此,使用这两个示例行,它应该将.TTL文件中的行导出到新的CSV文件中。
答案 0 :(得分:1)
使用GNU awk。首先阅读CSV并将其哈希到a
。然后将a
中的每个条目与TTL文件中的每一行进行比较:
$ awk 'BEGIN { IGNORECASE = 1 } # ignoring the case
NR==FNR { a[$1]; next } # hash csv to a hash
{
for(i in a) # each entry in a
if($0 ~ i) { # check against every record of ttl
print # if match, output matched ttl record
next # and skip to next ttl record
}
}' file.csv file.ttl
<nl.dbpedia.org/resource/Algoritme>; <purl.org/dc/terms/subject>; <nl.dbpedia.org/resource/Categorie:Algoritme>; .
根据文件的大小,它可能会很慢,也许可以更快,但不是基于OP中提供的信息。