我需要提取 sendmail 日志中每封电子邮件的大小,然后将其与电子邮件的总大小和总数相加

我需要提取 sendmail 日志中每封电子邮件的大小,然后将其与电子邮件的总大小和总数相加

在 size= 之后,大小很容易找到,我可以找到大小并将其放入文件中,但删除数字以外的所有内容,然后将其与一个文件中的总数字相加,这对我来说是行不通的。

现在我正在用这个;


grep 'size=' /var/log/maillog-2019* | awk ' { print $8 }' > output.txt

答案1

我会尝试使用 awk

$ awk -F'[[:blank:],=]' '/size=/ { sum += $12; total += 1} END { print "Sum: " sum " Total:" total}' /var/log/mail.log
  • -F'[[:blank:],=]'告诉 awk 处理所有类型的空格、逗号和等号作为字段分隔符
  • /size=/选择包含size=
  • { sum += $12; total += 1}选择第 12 个字段并将其添加到,sum同时我们将增加total一个
  • END { print "Sum: " sum " Total:" total}最后打印Sum: $sum Total:$total

例如 :

$ awk -F'[[:blank:],=]' '/size=/ { sum += $12; total += 1} END { print "Sum: " sum " Total:" total}' /var/log/mail.log
Sum: 1491646 Total:800

我不知道它是否能完美地为您工作但它应该能让您很好地了解如何去做!

相关内容