gpt4 book ai didi

linux - 按条件选择行并用一行命令计数

转载 作者:太空宇宙 更新时间:2023-11-04 10:38:47 25 4
gpt4 key购买 nike

我需要帮助分析 nginx 日志。日志样本:

10.10.10.10 - - [21/Mar/2016:00:00:00 +0000] "GET /example?page=&per_page=100&scopes= HTTP/1.1" 200 769 "-" "" "1.1.1.1"
10.10.10.10 - - [21/Mar/2016:00:00:00 +0000] "GET /example?page=&per_page=500&scopes= HTTP/1.1" 200 769 "-" "" "1.1.1.1"
11.11.11.11 - - [21/Mar/2016:00:00:00 +0000] "GET /example?page=&per_page=10&scopes= HTTP/1.1" 200 769 "-" "" "1.1.1.1"
12.12.12.12 - - [21/Mar/2016:00:00:00 +0000] "GET /example?page=&per_page=500&scopes= HTTP/1.1" 200 769 "-" "" "1.1.1.1"
13.13.13.13 - - [21/Mar/2016:00:00:00 +0000] "GET /example HTTP/1.1" 200 769 "-" "" "1.1.1.1"

是否可以通过 count 选择所有包含 per_page 参数且此参数等于或大于 100 的 uniq ip 地址?

因此,输出可以是任何格式:

10.10.10.10 - 2 # ip 10.10.10.10 was found twice
12.12.12.12 - 1

是否可以通过一个命令获取?

最佳答案

$ awk '/per_page=[0-9]{3}/{cnt[$1]++} END{for (ip in cnt) print ip, cnt[ip]}' file
12.12.12.12 1
10.10.10.10 2

这绝对是基本的 awk - 如果您打算在 UNIX 中处理任何其他文本文件,请阅读 Arnold Robbins 的 Effective Awk Programming, 4th Edition 一书。

关于linux - 按条件选择行并用一行命令计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36134001/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com