我刚刚选择了下面的代码,可以很好地确定重复的行和行号,并且可以正常工作。
from collections import defaultdict
def find_dupl(log):
output = defaultdict(list)
with open(log) as f:
for i, line in enumerate(f):
line = line.strip()
output[line].append(i)
print({k: v for k, v in output.items() if len(v) > 1})
find_dupl('rhel65')
结果输出如下,每个主机名或要打印到新行的项目。
{'hostlab01': [0, 1], 'hostlab02': [34, 35, 36]}
所需为:
hostlab01: [0, 1] hostlab02: [34, 35, 36]
答案 0 :(得分:1)
在函数中更改一行:
print(*['{}: {}'.format(k, v) for k, v in output.items() if len(v) > 1], sep='\n')
答案 1 :(得分:1)
将打印行更改为:
print("\n".join("{}\t{}".format(k, v) for k, v in output.items() if len(v) > 1))