从 nginx 日志文件中提取 IP 和 referer 的简单方法
Easy way to extract IP and referer from nginx log file
如何使用 awk 或其他可能的命令查找包含 facebook/instagram/twitter/etc 的 ip 和 referer,以获取此信息:
1.2.3.4 https://l.instagram.com/
4.3.2.1 https://facebook.com/
Nginx 日志文件具有标准格式:
1.2.3.4 - - [02/Oct/2021:06:07:08 +0300 - -] 200 "GET /index.php HTTP/2.0" 6620 "https://l.instagram.com/" "Mozilla/5.0 (Linux; Android 9; SM-N950F) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Mobile Safari/537.36" "-"
我正在使用
awk '{print }' access.log
和
awk -F\" '{print }' access.log
但是我不知道怎么把ip和referer放在一起
awk
$ awk '{gsub(/,/,"");print , }' input_file
sed
$ sed -E 's/^(.[^ ]*).*"(https.[^"]*).*/ /' input_file
输出
1.2.3.4 https://l.instagram.com/
$ awk -F'[ "]' '{print , }' file
1.2.3.4 https://l.instagram.com/
使用 gnu-awk,您可以使用 FPAT 和模式指定字段。
示例中的字段来自 [...]
或 "..."
或 1 个或多个非空白字符。
为此,您可以编写一个带有交替 |
的模式来匹配这 3 种变体中的任何一种。
\[[^][]*]|"([^"]*)"|\S+
如果 url 应匹配 instagram 或 facebook,您可以使用其他模式并从匹配中删除双引号。列值现在是 1 和 8。
awk -v FPAT='\[[^][]*]|"([^"]*)"|\S+' '{
if ( ~ /(instagram|facebook)\./) {
gsub(/"/, "", )
print ,
}
}' access.log
输出
1.2.3.4 https://l.instagram.com/
如何使用 awk 或其他可能的命令查找包含 facebook/instagram/twitter/etc 的 ip 和 referer,以获取此信息:
1.2.3.4 https://l.instagram.com/
4.3.2.1 https://facebook.com/
Nginx 日志文件具有标准格式:
1.2.3.4 - - [02/Oct/2021:06:07:08 +0300 - -] 200 "GET /index.php HTTP/2.0" 6620 "https://l.instagram.com/" "Mozilla/5.0 (Linux; Android 9; SM-N950F) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Mobile Safari/537.36" "-"
我正在使用
awk '{print }' access.log
和
awk -F\" '{print }' access.log
但是我不知道怎么把ip和referer放在一起
awk
$ awk '{gsub(/,/,"");print , }' input_file
sed
$ sed -E 's/^(.[^ ]*).*"(https.[^"]*).*/ /' input_file
输出
1.2.3.4 https://l.instagram.com/
$ awk -F'[ "]' '{print , }' file
1.2.3.4 https://l.instagram.com/
使用 gnu-awk,您可以使用 FPAT 和模式指定字段。
示例中的字段来自 [...]
或 "..."
或 1 个或多个非空白字符。
为此,您可以编写一个带有交替 |
的模式来匹配这 3 种变体中的任何一种。
\[[^][]*]|"([^"]*)"|\S+
如果 url 应匹配 instagram 或 facebook,您可以使用其他模式并从匹配中删除双引号。列值现在是 1 和 8。
awk -v FPAT='\[[^][]*]|"([^"]*)"|\S+' '{
if ( ~ /(instagram|facebook)\./) {
gsub(/"/, "", )
print ,
}
}' access.log
输出
1.2.3.4 https://l.instagram.com/