我是Python的新手,想要计算相同的60k文本文件中的内容,并列出所有不同的内容,其中有多少是相同的,如filter {
if ([type] == "testbed"){
if [MessageParserJson][e[{}] in [MessageParserJson]{
mutate {
remove_field => ["[MessageparserJson][e[{0}]]" , "[MessageparserJson][e[{1}]]" , "[MessageParserJson][e[{2}]]"]
add_field => { "[MessageParserJson][e[{3}]]" => "MessageParser" }
add_field => { "[MessageParserJson][e[{4}]]" => "MessageParser" }
add_field => { "[MessageParserJson][e[{5}]]" => "MessageParser" }
add_field => { "[MessageParserJson][e[{6}]]" => "MessageParser" }
}
}
drop {
remove_field => ["MessageParserJson"]
}
}
}
但在文件上而不是行,等级。
到目前为止,我有:
uniq -c
答案 0 :(得分:1)
我没有彻底测试过,但您可以使用Python的hashlib
在每个文件上获取MD5哈希值,并将文件名存储在与字典中每个哈希相关联的list
中。 / p>
然后,要获取包含它出现的文件数量的唯一内容,请迭代字典:
import os
import hashlib
mypath = 'testdup'
onlyfiles = [f for f in os.listdir(mypath)
if os.path.isfile(os.path.join(mypath,f)) ]
files = {}
for filename in onlyfiles:
filehash = hashlib.md5(open(os.path.join(mypath, filename), 'rb')
.read()).hexdigest()
try:
files[filehash].append(filename)
except KeyError:
files[filehash] = [filename]
for filehash, filenames in files.items():
print('{0} files have this content:'.format(len(filenames)))
print(open(os.path.join(mypath,filenames[0])).read())