使用 bash 或 awk 从文件读取数据并插入数据库

read data from a file and insert into a database using bash or awk

我是 Bash 和 unix 的新手。我被分配了一项任务,从名为 errors.out 的日志中提取数据,该日志使用分隔符 |。这是数据示例:

1423544401|video_load_time|5.0.0.37|i3|55.66.88.77|0.0|RAT|mike|5656519|6549943438483||专辑|||N/A||7149

所以基本上按顺序排列的数据由 | 分隔如下:

   times
   eventKey
   appl
   devic
   devn
   sign
   ne
   State
   latude
   lde
   su
   buame
   tount
   assId
   eCode
   monitor
   duration

我需要计算每个事件键 (video_load_time) 并加上它们的总持续时间。 然后我必须将这两个字段插入到我创建的数据库中。 我的数据库在 table counter 下有 2 个字段 counttotalduration。 有谁知道我应该用什么来完成这个?我听说 awkpython 是个不错的选择..

使用 awk:

awk -F \| '{ duration[] += $NF } END { for(d in duration) { print d, duration[d] } }' errors.out

此处 </code> 是每行的第二个字段,<code>$NF 是最后一个字段,因此这将按键总结持续时间并在到达输入末尾时打印结果 -- 之后一切都已处理。

编辑:要添加一个计数器,

    awk -F \| '{ duration[] += $NF; ++counter[] } END { for(d in duration) { print d, counter[d], duration[d] } }' errors.out
awk -v FS="|" -v KEY="video_load_time" '==KEY{TOTAL+=$NF}END{print KEY,TOTAL}'  my_file

-v KEY="video_load_time"

您可以将变量键字符串更改为 video_load_time

以外的任何其他值