如何解决使用awk汇总数据并排序输出,然后对列的结果求和
LOGFILE的原始数据:
['food','fo0d','f0od']
代码:
def generatePerms(newDomain):
permutations = []
similarities = [
['i','l','!','|'],['o','0'],['e','3'],]
for i in range(len(newDomain)):
for similarList in similarities:
if newDomain[i] in similarList:
#get the substrings around the similar char
start = newDomain[0:i]
end = newDomain[i+1:]
#concatenate the different possible characters and add to global list
for chars in similarList:
permutations.append(start+chars+end)
return list(set(permutations))
结果:
Data1 12:00 Sep 28 COUNT= 100
Data1 12:00 Sep 30 COUNT= 8
Data1 12:00 Oct 02 COUNT= 4
Data1 12:00 Oct 01 COUNT= 3
Data1 12:00 Oct 05 COUNT= 4
Data1 12:00 Oct 01 COUNT= 3
Data1 12:00 Sep 29 COUNT= 5
Data1 12:00 Sep 29 COUNT= 5
此代码执行3件事:
- 搜索包含Data1记录的任何行以获取第三,第四,第五和第六列(LOGFile的列)
- 然后按结果的第一列(-k1,1)和通常按结果的第二列(-k2,2)对它们进行反向(r)排序,并排除任何重复(-u)
- 然后将结果的最后一列(awk结果的第4列)求和,显示为“总计”
Edit1:
grep "Data1" $LOGFILE | awk '{print $3,$4,$5,$6|"sort -k1,1r -k2,2 -u"}' | awk '{sum+=$4} {print "\t"$1,$2,$3,$4} END {print "\t\tTotal=","\033[44m"sum"\033[m"}'
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。