15号URL所有使用流量
#!/bin/bash
awk -v target_date="15/Feb/2025" '
BEGIN {
# 设置字段分隔符:空格或双引号(确保正确分割请求行)
FS = "[ \"]+"
}
{
# 提取日期并处理
gsub(/[\[\]]/, "", $4); # 去除方括号
split($4, dt, ":"); # 分割日期和时间
current_date = dt[1];
# 仅处理目标日期的日志
if (current_date != target_date) next;
# 提取URL和流量($7是URL字段,$10是流量字段)
url = $7;
bytes = $10 + 0; # 转换为数值,非数字则为0
# 累加流量
traffic[url] += bytes;
}
END {
# 输出结果
for (u in traffic) {
printf "%-60s %12d\n", u, traffic[u];
}
}' /www/wwwlogs/your_log_file.log
15号URL所有使用流量前100名
#!/bin/bash
awk -v target_date="15/Feb/2025" '
BEGIN {
FS = "[ \"]+"; # 字段分隔符:空格或双引号
}
{
# 提取日期并处理
gsub(/[\[\]]/, "", $4);
split($4, dt, ":");
current_date = dt[1];
# 过滤非目标日期的日志
if (current_date != target_date) next;
# 提取URL和流量($7为URL,$10为流量)
url = $7;
bytes = $10 + 0; # 转换为数值
# 累加流量
traffic[url] += bytes;
}
END {
# 输出流量和URL(流量在前,便于排序)
for (u in traffic) {
print traffic[u], u;
}
}' /www/wwwlogs/img.single.tltool.cn.img.log |
sort -k1,1nr | # 按流量降序排序
head -n 100 | # 取前100名
awk '{printf "%-60s %12d\n", $2, $1}' # 调整输出格式
15号URL所有使用流量前100名,流量数字放在前面,url放在后面
#!/bin/bash
awk -v target_date="15/Feb/2025" '
BEGIN {
FS = "[ \"]+"; # 字段分隔符:空格或双引号
}
{
# 提取并过滤日期
gsub(/[\[\]]/, "", $4);
split($4, dt, ":");
if (dt[1] != target_date) next;
# 提取URL和流量
url = $7;
traffic[url] += ($10 + 0); # 自动处理非数字
}
END {
# 输出格式:流量数值 + URL
for (u in traffic) {
print traffic[u], u; # 数值在前直接输出
}
}' /www/wwwlogs/img.single.tltool.cn.img.log |
sort -nr | # 纯数字降序排序
head -n 100 | # 取TOP100
awk '{printf "%-15d%s\n", $1, $2}' # 格式化对齐
15号URL所有使用流量前100名,流量数字放在前面,url放在后面,并转换单位为MB
#!/bin/bash
awk -v target_date="15/Feb/2025" '
BEGIN {
FS = "[ \"]+"; # 字段分隔符:空格或双引号
}
{
# 提取并过滤日期
gsub(/[\[\]]/, "", $4);
split($4, dt, ":");
if (dt[1] != target_date) next;
# 提取URL和流量(字节)
url = $7;
traffic[url] += ($10 + 0); # 累加字节数
}
END {
# 输出:原始字节数 + URL(供后续排序)
for (u in traffic) {
print traffic[u], u;
}
}' /www/wwwlogs/img.single.tltool.cn.img.log |
sort -nr | # 按字节数值降序排序
head -n 100 | # 取TOP100
awk '{
# 字节转兆字节(MB),保留2位小数
mb = $1 / 1024 / 1024;
printf "%-8.2fMB %s\n", mb, $2 # 格式化输出
}'