You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用awk等命令从Nginx日志提取IP及含社交平台的Referer

实现命令

直接运行以下awk命令即可一步完成筛选、字段提取和输出:

awk -F '"' '$4 ~ /facebook|instagram|twitter/ { split($1, arr, " "); print arr[1], $4 }' access.log

命令逻辑说明

  • 以双引号"作为全局字段分隔符:标准Nginx combined日志格式下,所有被双引号包裹的内容会被独立拆分,Referer是第二个被双引号包裹的内容,对应字段序号为$4,避免请求路径带空格导致的字段偏移问题,你之前单独提取Referer的命令字段序号有误就是这个原因。
  • 筛选逻辑:$4 ~ /facebook|instagram|twitter/会仅保留Referer包含指定社交平台域名的记录。
  • 字段提取:对双引号分隔后的第一个字段$1(即日志行开头到请求行前的部分)按空格拆分,取拆分后的第一个元素即为客户端IP。
  • 输出格式:直接输出IP和对应Referer,完全匹配你需要的格式。

可选扩展

如果需要匹配时忽略域名大小写,或者对输出结果去重,可以调整为:

# 大小写不敏感匹配 + 结果去重
awk -F '"' 'BEGIN{IGNORECASE=1} $4 ~ /facebook|instagram|twitter/ { split($1, arr, " "); print arr[1], $4 }' access.log | sort | uniq

内容的提问来源于stack exchange,提问作者jazzfriends

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 21:57:02