【发布时间】:2018-09-19 19:46:06
【问题描述】:
服务器在日期和冒号后的方括号中提供以逗号分隔的资产 ID 列表:
20160420084726:-
20160420085418:[111783178, 111557953, 111646835, 111413356, 111412662, 105618372, 111413557]
20160420085418:[111413432, 111633904, 111783198, 111792767, 111557948, 111413225, 111413281]
20160420085418:[111413432, 111633904, 111783198, 111792767, 111557948, 111413225, 111413281]
20160420085522:[111344871, 111394583, 111295547, 111379566, 111352520]
20160420090022:[111344871, 111394583, 111295547, 111379566, 111352520]
输入日志的格式为:
timestamp:ads
在哪里:
timestamp 的格式为 YYYYMMDDhhmmss,ads 是用方括号括起来的广告资产 ID 的逗号分隔列表,如果没有返回广告,则为 -。
任务的第一部分是编写一个脚本,输出一天中每十分钟的片断:
- 返回的 ID 计数
- 返回的唯一 ID 计数
- 脚本应支持命令行参数来选择是否应提供唯一 ID 或总 ID。
使用上述日志摘录的示例输出(以总计模式):
20160420084:0
20160420085:26
20160420090:5
在唯一计数模式下,它会给出:
20160420084:0
20160420085:19
20160420090:5
我试过这个:
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]
}
' $LOGFILENAME | grep $DATE;
到目前为止,其他场景都失败了。比如这个:
日志文件: https://drive.google.com/file/d/1sXFvLyCH8gZrXiqf095MubyP7-sLVUXt/view?usp=sharing
结果的前几行应该是:
非唯一:
20160420000:1
20160420001:11
20160420002:13
20160420003:16
20160420004:3
20160420005:3
20160420010:6
独特:
20160420000:1
20160420001:5
20160420002:5
20160420003:5
20160420004:3
20160420005:3
20160420010:4
【问题讨论】:
-
你试过什么?
-
我没有看到关于这个问题的递归。