Unix命令使用cut从日志中查找总计数

时间:2015-03-19 16:07:24

标签: bash shell unix

我正在将删除的记录计数写入unix中的文件。以下是日志文件的结构。

使用unix命令我该怎么做?

  • 查找已删除记录的总数?

  • 查找已删除的总计数 按日记录?

下面的日志文件结构:

  

2015-03-16 15:43:59 DEBUG LoadClass:147 - 从表中删除了10个。

     

2015-03-17 15:44:59 DEBUG LoadClass:147 - 从表中删除1。

     

2015-03-19 15:45:59 DEBUG LoadClass:147 - 从表中删除了5。

     

2015-03-19 15:46:59 DEBUG LoadClass:147 - 从表中删除了8。

2 个答案:

答案 0 :(得分:2)

您可以使用awk来执行此操作:

awk '/Deleted/{a[$1]+=$(NF-2); tot+=$(NF-2);} \
     END{ for (i in a) print i, a[i]; print "total:", tot}' file

如果您的文件格式与您的示例不同,您可能需要调整模式Deleted)和记录计数的字段编号(NF-2)。

答案 1 :(得分:1)

perl在这里运作良好:

perl -anE '
    if (/Deleted (\d+)/) {$total += $1; $count{$F[0]} += $1;}
  } END {
    say "total: $total";
    say "$_: $count{$_}" for (sort keys %count);
' file
total: 24
2015-03-16: 10
2015-03-17: 1
2015-03-19: 13

根据要求进一步解释。