2026.06.16 | youres | 3次围观
为什么需要按渠道分组统计UTM参数
做营销投放的人都知道,UTM参数是追踪流量来源的生命线。但很多人在实际工作中遇到一个问题:拿到了一堆URL的UTM参数检测结果,却不知道哪个渠道效果好。
如果你用curl批量检测了1000个营销链接的UTM参数保留情况,输出是一个长长的CSV文件。里面混杂着微信、微博、抖音、百度、谷歌等各个渠道的链接。不按渠道分组,这些数据就是一团乱麻。
本文分享3个实战Shell脚本方案,让你把curl UTM参数检测结果按渠道自动分组统计,直接输出可供决策使用的报告。
方案1:awk按UTM_SOURCE列分组统计(最简单)
假设你已经用curl批量检测并导出了CSV报告,格式如下:
URL,UTM_SOURCE,UTM_MEDIUM,UTM_CAMPAIGN,参数是否保留
https://example.com?utm_source=wechat, wechat,social,spring_sale,保留
https://example.com?utm_source=baidu,baidu,cpc,brand,丢失
脚本核心思路
- 用curl批量检测UTM参数,输出CSV
- 用awk按UTM_SOURCE字段分组
- 统计每个渠道的参数保留率
完整脚本
#!/bin/bash
# utm_channel_stats.sh
CSV_FILE="utm_check_result.csv"
echo "渠道,总链接数,参数保留数,保留率" > report.txt
awk -F',' 'NR>1 {source[$2]++; if($5=="保留") retained[$2]++} END {for(s in source) {rc=retained[s]+0; rate=(rc/source[s])*100; printf "%s,%d,%d,%.2f%%\n", s, source[s], rc, rate}}' "$CSV_FILE" >> report.txt
cat report.txt
这个方案的优势:脚本只有20行,awk处理大文件速度极快,依赖少。
方案2:Shell关联数组按渠道+媒介双维度分组(更精细)
方案1只按utm_source分组,但utm_medium同样重要。比如同样是微信渠道,朋友圈广告和公众号推文的参数保留情况可能完全不同。
脚本核心思路
- 用关联数组以"渠道+媒介"作为复合键
- 分别统计每个组合的总数和保留数
- 输出时按保留率排序
完整脚本
#!/bin/bash
declare -A total retained
while IFS=',' read -r url source medium campaign retained_status; do
((total["$source|$medium"]++))
[[ "$retained_status" == "保留" ]] && ((retained["$source|$medium"]++))
done < <(tail -n +2 utm_check_result.csv)
for key in "${!total[@]}"; do
s="${key%%|*}"; m="${key#*|}"
t="${total[$key]}"; r="${retained[$key]:-0}"
rate=$(awk "BEGIN {printf \"%.2f\", ($r/$t)*100}")
printf "%-10s %-10s %6d %6d %7.2f%%\n" "$s" "$m" "$t" "$r" "$rate"
done | sort -k5 -t' ' -n
这个方案的优势:双维度分析能精准定位问题。
方案3:生成HTML可视化报告(可直接发给领导看)
前两个方案输出的是纯文本。如果要向领导汇报,最好的方式是生成HTML报告,带表格和颜色标注。
脚本核心思路
- 用Shell脚本生成HTML文件
- 参数保留率>90%显示绿色,<80%显示红色
- 嵌入简单CSS,让报告看起来专业
完整脚本
#!/bin/bash
echo "UTM参数检测渠道分组报告
渠道 总数 保留数 保留率 " > report.html
awk -F',' 'NR>1 {t[$2]++; if($5=="保留") r[$2]++} END {for(s in t){rc=r[s]+0;rate=(rc/t[s])*100;c=(rate>=90)?"good":"bad";printf "%s %d %d %.2f%% \n",s,t[s],rc,c,rate}}' utm_check_result.csv >> report.html
echo "
" >> report.html
echo "HTML报告已生成:report.html"
这个方案的优势:零额外依赖,纯Shell+awk生成,任何服务器都能运行。
3个方案的选型建议
| 场景 | 推荐方案 |
|---|---|
| 快速自查 | 方案1 |
| 精细分析 | 方案2 |
| 汇报展示 | 方案3 |
内链推荐(延伸阅读)
总结
UTM参数检测只是第一步,按渠道分组统计才是让数据产生价值的关键。本文分享的3个Shell脚本方案,分别适用于快速自查、精细分析和汇报展示三种场景。
版权声明
本文仅代表个人观点。
本文系AI辅助作者原创,未经许可,转载请保留原文链接。

发表评论