繁体   English   中英

从文件读取数据并使用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 |麦克| 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)并加上它们的总持续时间。 然后,我必须将这两个字段插入到我创建的数据库中。 我的数据库在表counter下有2个字段counttotalduration 有谁知道我应该用什么来实现这一目标? 我听说awkpython是一个不错的选择。

使用awk:

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

这里$2是每行的第二个字段, $NF是最后一行,因此这将通过键求和持续时间,并在到达输入的末尾时(在处理完所有内容之后)打印结果。

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

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

对于

-v KEY="video_load_time"

您可以将可变键字符串更改为video_load_time以外的任何其他值

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM