有这个日志文件
20180917084726:-
20180917085418:[111783178, 111557953, 111646835, 111413356, 111412662, 105618372, 111413557]
20180917115418:[111413432, 111633904, 111783198, 111792767, 111557948, 111413225, 111413281]
20180917105419:[111413432, 111633904, 111783198, 111792767, 111557948, 111413225, 111413281]
20180917085522:[111344871, 111394583, 111295547, 111379566, 111352520]
20180917090022:[111344871, 111394583, 111295547, 111379566, 111352520]
输入日志的格式为:
时间戳的格式为 YYYYMMDDhhmmss
我想知道如何编写一个脚本,为一天的每十分钟输出一行返回的唯一 ID 的计数
结果是这样的:
20180917084:0
20180917085:12
20180917115:7
20180917105:7
awk:使用冒号或逗号作为字段分隔符。
awk -F '[,:]' '
{
key = substr($1,1,11)"0"
count[key] += ($2 == "-" ? 0 : NF-1)
}
END {
PROCINFO["sorted_in"] = "@ind_num_asc"
for (key in count) print key, count[key]
}
' file
201809170840 0
201809170850 12
201809170900 5
201809171050 7
201809171150 7
要过滤今天的日期,您可以说:
gawk -F '[,:]' '
BEGIN {today = strftimme("%Y%m%d", systime())}
$0 ~ "^"today { key = ...
或者
awk -F '[,:]' -v "today=$(date "+%Y%m%d")" '
$0 ~ "^"today { key = ...
或将现有的 awk 代码通过管道传输到 | grep "^$(date +%Y%m%d)"
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句