New on LowEndTalk? Please Register and read our Community Rules.
All new Registrations are manually reviewed and approved, so a short delay after registration may occur before your account becomes active.
All new Registrations are manually reviewed and approved, so a short delay after registration may occur before your account becomes active.
Need some help to parse a nginx access.log file in bash
Dear all,
I would like to achieve the following with a bash one-liner or script:
- Parse a standard nginx access.log
- Print out a list of the total number of requests per unique IP, sorted in descending order.
Something like:
Unique IP Number of Requests 123.123.123.123 30,476 124.124.124.124 20,139 125.125.125.125 15,545 ... ...
Is there any bash/awk/sed guru out there who may be able to help me with that? Any hint is highly appreciated!
Many thanks in advance & kind regards
-Amitz
P.S.:
I tried it with this:
FILE=/path/to/access.log; for ip in `cat $FILE |cut -d ' ' -f 1 |sort |uniq`; do { COUNT=`grep ^$ip $FILE |wc -l`; if [[ "$COUNT" -gt "500" ]]; then echo "$COUNT: $ip"; fi }; done
but I wonder if there is a more elegant way to do so...
Comments
Scratch it! :-)
I found a nice one-liner that does the job for me!
For others and future reference: