使用 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 个字段 count
和 totalduration
。
有谁知道我应该用什么来完成这个?我听说 awk
或 python
是个不错的选择..
使用 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
以外的任何其他值
我是 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 个字段 count
和 totalduration
。
有谁知道我应该用什么来完成这个?我听说 awk
或 python
是个不错的选择..
使用 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