count occurances of text in file with bash The Next CEO of Stack OverflowCount duplicated words in a text fileHelp with bash script with textuniq --count command is yields incorrect result?bash - wrong answer by word count commandSort file/folder output in BashHow long it will take to sort uniq a 62GB file?How to sort a file with bashHow to count number of process instances with bash?Wrong sorting a text fileBash incrementing bash string - from text file

Anatomically Correct Strange Women In Ponds Distributing Swords

Unreliable Magic - Is it worth it?

Any way to transfer all permissions from one role to another?

Explicit solution of a Hamiltonian system

A pseudo-riley?

Only print output after finding pattern

ls Ordering[Ordering[list]] optimal?

Why doesn't a table tennis ball float on the surface? How do we calculate buoyancy here?

How long to clear the 'suck zone' of a turbofan after start is initiated?

Can a single photon have an energy density?

MAZDA 3 2006 (UK) - poor acceleration then takes off at 3250 revs

'Given that' in a matrix

If the heap is initialized for security, then why is the stack uninitialized?

Inappropriate reference requests from Journal reviewers

Should I tutor a student who I know has cheated on their homework?

count occurances of text in file with bash

Trouble understanding the speech of overseas colleagues

Does the Brexit deal have to be agreed by both Houses?

Why does standard notation not preserve intervals (visually)

Is it okay to store user locations?

What size rim is OK?

How do I go from 300 unfinished/half written blog posts, to published posts?

Is HostGator storing my password in plaintext?

How can I quit an app using Terminal?



count occurances of text in file with bash



The Next CEO of Stack OverflowCount duplicated words in a text fileHelp with bash script with textuniq --count command is yields incorrect result?bash - wrong answer by word count commandSort file/folder output in BashHow long it will take to sort uniq a 62GB file?How to sort a file with bashHow to count number of process instances with bash?Wrong sorting a text fileBash incrementing bash string - from text file










2















I have a log file sorted by IP addresses,
I want to find the number of occurrences of each unique IP address.
how can I do this with bash? possibly listing the number of occurrences next to an ip, such as:



5.135.134.16 count: 5
13.57.220.172: count 30
18.206.226 count:2


....and so on.



heres a sample of the log:



5.135.134.16 - - [23/Mar/2019:08:42:54 -0400] "GET /wp-login.php HTTP/1.1" 200 2988 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0"
5.135.134.16 - - [23/Mar/2019:08:42:55 -0400] "GET /wp-login.php HTTP/1.1" 200 2988 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0"
5.135.134.16 - - [23/Mar/2019:08:42:55 -0400] "POST /wp-login.php HTTP/1.1" 200 3836 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0"
5.135.134.16 - - [23/Mar/2019:08:42:55 -0400] "POST /wp-login.php HTTP/1.1" 200 3988 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0"
5.135.134.16 - - [23/Mar/2019:08:42:56 -0400] "POST /xmlrpc.php HTTP/1.1" 200 413 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0"
13.57.220.172 - - [23/Mar/2019:11:01:05 -0400] "GET /wp-login.php HTTP/1.1" 200 2988 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0"
13.57.220.172 - - [23/Mar/2019:11:01:06 -0400] "POST /wp-login.php HTTP/1.1" 200 3985 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0"
13.57.220.172 - - [23/Mar/2019:11:01:07 -0400] "GET /wp-login.php HTTP/1.1" 200 2988 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0"
13.57.220.172 - - [23/Mar/2019:11:01:08 -0400] "POST /wp-login.php HTTP/1.1" 200 3833 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0"
13.57.220.172 - - [23/Mar/2019:11:01:09 -0400] "GET /wp-login.php HTTP/1.1" 200 2988 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0"
13.57.220.172 - - [23/Mar/2019:11:01:11 -0400] "POST /wp-login.php HTTP/1.1" 200 3836 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0"
13.57.220.172 - - [23/Mar/2019:11:01:12 -0400] "GET /wp-login.php HTTP/1.1" 200 2988 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0"
13.57.220.172 - - [23/Mar/2019:11:01:15 -0400] "POST /wp-login.php HTTP/1.1" 200 3837 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0"
13.57.220.172 - - [23/Mar/2019:11:01:17 -0400] "POST /xmlrpc.php HTTP/1.1" 200 413 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0"
13.57.233.99 - - [23/Mar/2019:04:17:45 -0400] "GET / HTTP/1.1" 200 25160 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36"
18.206.226.75 - - [23/Mar/2019:21:58:07 -0400] "GET /wp-login.php HTTP/1.1" 200 2988 "https://www.google.com/url?3a622303df89920683e4421b2cf28977" "Mozilla/5.0 (Windows NT 6.2; rv:33.0) Gecko/20100101 Firefox/33.0"
18.206.226.75 - - [23/Mar/2019:21:58:07 -0400] "POST /wp-login.php HTTP/1.1" 200 3988 "https://www.google.com/url?3a622303df89920683e4421b2cf28977" "Mozilla/5.0 (Windows NT 6.2; rv:33.0) Gecko/20100101 Firefox/33.0"
18.213.10.181 - - [23/Mar/2019:14:45:42 -0400] "GET /wp-login.php HTTP/1.1" 200 2988 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0"
18.213.10.181 - - [23/Mar/2019:14:45:42 -0400] "GET /wp-login.php HTTP/1.1" 200 2988 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0"
18.213.10.181 - - [23/Mar/2019:14:45:42 -0400] "GET /wp-login.php HTTP/1.1" 200 2988 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0"









share|improve this question
























  • With “bash”, do you mean the plain shell or the command line in general?

    – dessert
    22 mins ago















2















I have a log file sorted by IP addresses,
I want to find the number of occurrences of each unique IP address.
how can I do this with bash? possibly listing the number of occurrences next to an ip, such as:



5.135.134.16 count: 5
13.57.220.172: count 30
18.206.226 count:2


....and so on.



heres a sample of the log:



5.135.134.16 - - [23/Mar/2019:08:42:54 -0400] "GET /wp-login.php HTTP/1.1" 200 2988 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0"
5.135.134.16 - - [23/Mar/2019:08:42:55 -0400] "GET /wp-login.php HTTP/1.1" 200 2988 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0"
5.135.134.16 - - [23/Mar/2019:08:42:55 -0400] "POST /wp-login.php HTTP/1.1" 200 3836 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0"
5.135.134.16 - - [23/Mar/2019:08:42:55 -0400] "POST /wp-login.php HTTP/1.1" 200 3988 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0"
5.135.134.16 - - [23/Mar/2019:08:42:56 -0400] "POST /xmlrpc.php HTTP/1.1" 200 413 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0"
13.57.220.172 - - [23/Mar/2019:11:01:05 -0400] "GET /wp-login.php HTTP/1.1" 200 2988 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0"
13.57.220.172 - - [23/Mar/2019:11:01:06 -0400] "POST /wp-login.php HTTP/1.1" 200 3985 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0"
13.57.220.172 - - [23/Mar/2019:11:01:07 -0400] "GET /wp-login.php HTTP/1.1" 200 2988 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0"
13.57.220.172 - - [23/Mar/2019:11:01:08 -0400] "POST /wp-login.php HTTP/1.1" 200 3833 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0"
13.57.220.172 - - [23/Mar/2019:11:01:09 -0400] "GET /wp-login.php HTTP/1.1" 200 2988 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0"
13.57.220.172 - - [23/Mar/2019:11:01:11 -0400] "POST /wp-login.php HTTP/1.1" 200 3836 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0"
13.57.220.172 - - [23/Mar/2019:11:01:12 -0400] "GET /wp-login.php HTTP/1.1" 200 2988 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0"
13.57.220.172 - - [23/Mar/2019:11:01:15 -0400] "POST /wp-login.php HTTP/1.1" 200 3837 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0"
13.57.220.172 - - [23/Mar/2019:11:01:17 -0400] "POST /xmlrpc.php HTTP/1.1" 200 413 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0"
13.57.233.99 - - [23/Mar/2019:04:17:45 -0400] "GET / HTTP/1.1" 200 25160 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36"
18.206.226.75 - - [23/Mar/2019:21:58:07 -0400] "GET /wp-login.php HTTP/1.1" 200 2988 "https://www.google.com/url?3a622303df89920683e4421b2cf28977" "Mozilla/5.0 (Windows NT 6.2; rv:33.0) Gecko/20100101 Firefox/33.0"
18.206.226.75 - - [23/Mar/2019:21:58:07 -0400] "POST /wp-login.php HTTP/1.1" 200 3988 "https://www.google.com/url?3a622303df89920683e4421b2cf28977" "Mozilla/5.0 (Windows NT 6.2; rv:33.0) Gecko/20100101 Firefox/33.0"
18.213.10.181 - - [23/Mar/2019:14:45:42 -0400] "GET /wp-login.php HTTP/1.1" 200 2988 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0"
18.213.10.181 - - [23/Mar/2019:14:45:42 -0400] "GET /wp-login.php HTTP/1.1" 200 2988 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0"
18.213.10.181 - - [23/Mar/2019:14:45:42 -0400] "GET /wp-login.php HTTP/1.1" 200 2988 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0"









share|improve this question
























  • With “bash”, do you mean the plain shell or the command line in general?

    – dessert
    22 mins ago













2












2








2


2






I have a log file sorted by IP addresses,
I want to find the number of occurrences of each unique IP address.
how can I do this with bash? possibly listing the number of occurrences next to an ip, such as:



5.135.134.16 count: 5
13.57.220.172: count 30
18.206.226 count:2


....and so on.



heres a sample of the log:



5.135.134.16 - - [23/Mar/2019:08:42:54 -0400] "GET /wp-login.php HTTP/1.1" 200 2988 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0"
5.135.134.16 - - [23/Mar/2019:08:42:55 -0400] "GET /wp-login.php HTTP/1.1" 200 2988 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0"
5.135.134.16 - - [23/Mar/2019:08:42:55 -0400] "POST /wp-login.php HTTP/1.1" 200 3836 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0"
5.135.134.16 - - [23/Mar/2019:08:42:55 -0400] "POST /wp-login.php HTTP/1.1" 200 3988 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0"
5.135.134.16 - - [23/Mar/2019:08:42:56 -0400] "POST /xmlrpc.php HTTP/1.1" 200 413 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0"
13.57.220.172 - - [23/Mar/2019:11:01:05 -0400] "GET /wp-login.php HTTP/1.1" 200 2988 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0"
13.57.220.172 - - [23/Mar/2019:11:01:06 -0400] "POST /wp-login.php HTTP/1.1" 200 3985 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0"
13.57.220.172 - - [23/Mar/2019:11:01:07 -0400] "GET /wp-login.php HTTP/1.1" 200 2988 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0"
13.57.220.172 - - [23/Mar/2019:11:01:08 -0400] "POST /wp-login.php HTTP/1.1" 200 3833 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0"
13.57.220.172 - - [23/Mar/2019:11:01:09 -0400] "GET /wp-login.php HTTP/1.1" 200 2988 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0"
13.57.220.172 - - [23/Mar/2019:11:01:11 -0400] "POST /wp-login.php HTTP/1.1" 200 3836 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0"
13.57.220.172 - - [23/Mar/2019:11:01:12 -0400] "GET /wp-login.php HTTP/1.1" 200 2988 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0"
13.57.220.172 - - [23/Mar/2019:11:01:15 -0400] "POST /wp-login.php HTTP/1.1" 200 3837 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0"
13.57.220.172 - - [23/Mar/2019:11:01:17 -0400] "POST /xmlrpc.php HTTP/1.1" 200 413 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0"
13.57.233.99 - - [23/Mar/2019:04:17:45 -0400] "GET / HTTP/1.1" 200 25160 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36"
18.206.226.75 - - [23/Mar/2019:21:58:07 -0400] "GET /wp-login.php HTTP/1.1" 200 2988 "https://www.google.com/url?3a622303df89920683e4421b2cf28977" "Mozilla/5.0 (Windows NT 6.2; rv:33.0) Gecko/20100101 Firefox/33.0"
18.206.226.75 - - [23/Mar/2019:21:58:07 -0400] "POST /wp-login.php HTTP/1.1" 200 3988 "https://www.google.com/url?3a622303df89920683e4421b2cf28977" "Mozilla/5.0 (Windows NT 6.2; rv:33.0) Gecko/20100101 Firefox/33.0"
18.213.10.181 - - [23/Mar/2019:14:45:42 -0400] "GET /wp-login.php HTTP/1.1" 200 2988 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0"
18.213.10.181 - - [23/Mar/2019:14:45:42 -0400] "GET /wp-login.php HTTP/1.1" 200 2988 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0"
18.213.10.181 - - [23/Mar/2019:14:45:42 -0400] "GET /wp-login.php HTTP/1.1" 200 2988 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0"









share|improve this question
















I have a log file sorted by IP addresses,
I want to find the number of occurrences of each unique IP address.
how can I do this with bash? possibly listing the number of occurrences next to an ip, such as:



5.135.134.16 count: 5
13.57.220.172: count 30
18.206.226 count:2


....and so on.



heres a sample of the log:



5.135.134.16 - - [23/Mar/2019:08:42:54 -0400] "GET /wp-login.php HTTP/1.1" 200 2988 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0"
5.135.134.16 - - [23/Mar/2019:08:42:55 -0400] "GET /wp-login.php HTTP/1.1" 200 2988 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0"
5.135.134.16 - - [23/Mar/2019:08:42:55 -0400] "POST /wp-login.php HTTP/1.1" 200 3836 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0"
5.135.134.16 - - [23/Mar/2019:08:42:55 -0400] "POST /wp-login.php HTTP/1.1" 200 3988 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0"
5.135.134.16 - - [23/Mar/2019:08:42:56 -0400] "POST /xmlrpc.php HTTP/1.1" 200 413 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0"
13.57.220.172 - - [23/Mar/2019:11:01:05 -0400] "GET /wp-login.php HTTP/1.1" 200 2988 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0"
13.57.220.172 - - [23/Mar/2019:11:01:06 -0400] "POST /wp-login.php HTTP/1.1" 200 3985 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0"
13.57.220.172 - - [23/Mar/2019:11:01:07 -0400] "GET /wp-login.php HTTP/1.1" 200 2988 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0"
13.57.220.172 - - [23/Mar/2019:11:01:08 -0400] "POST /wp-login.php HTTP/1.1" 200 3833 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0"
13.57.220.172 - - [23/Mar/2019:11:01:09 -0400] "GET /wp-login.php HTTP/1.1" 200 2988 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0"
13.57.220.172 - - [23/Mar/2019:11:01:11 -0400] "POST /wp-login.php HTTP/1.1" 200 3836 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0"
13.57.220.172 - - [23/Mar/2019:11:01:12 -0400] "GET /wp-login.php HTTP/1.1" 200 2988 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0"
13.57.220.172 - - [23/Mar/2019:11:01:15 -0400] "POST /wp-login.php HTTP/1.1" 200 3837 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0"
13.57.220.172 - - [23/Mar/2019:11:01:17 -0400] "POST /xmlrpc.php HTTP/1.1" 200 413 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0"
13.57.233.99 - - [23/Mar/2019:04:17:45 -0400] "GET / HTTP/1.1" 200 25160 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36"
18.206.226.75 - - [23/Mar/2019:21:58:07 -0400] "GET /wp-login.php HTTP/1.1" 200 2988 "https://www.google.com/url?3a622303df89920683e4421b2cf28977" "Mozilla/5.0 (Windows NT 6.2; rv:33.0) Gecko/20100101 Firefox/33.0"
18.206.226.75 - - [23/Mar/2019:21:58:07 -0400] "POST /wp-login.php HTTP/1.1" 200 3988 "https://www.google.com/url?3a622303df89920683e4421b2cf28977" "Mozilla/5.0 (Windows NT 6.2; rv:33.0) Gecko/20100101 Firefox/33.0"
18.213.10.181 - - [23/Mar/2019:14:45:42 -0400] "GET /wp-login.php HTTP/1.1" 200 2988 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0"
18.213.10.181 - - [23/Mar/2019:14:45:42 -0400] "GET /wp-login.php HTTP/1.1" 200 2988 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0"
18.213.10.181 - - [23/Mar/2019:14:45:42 -0400] "GET /wp-login.php HTTP/1.1" 200 2988 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0"






command-line bash sort uniq






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited 20 mins ago







j0h

















asked 26 mins ago









j0hj0h

6,4801657119




6,4801657119












  • With “bash”, do you mean the plain shell or the command line in general?

    – dessert
    22 mins ago

















  • With “bash”, do you mean the plain shell or the command line in general?

    – dessert
    22 mins ago
















With “bash”, do you mean the plain shell or the command line in general?

– dessert
22 mins ago





With “bash”, do you mean the plain shell or the command line in general?

– dessert
22 mins ago










4 Answers
4






active

oldest

votes


















5














You can use cut and uniq tools:



cut -d ' ' -f1 test.txt | uniq -c
5 5.135.134.16
9 13.57.220.172
1 13.57.233.99
2 18.206.226.75
3 18.213.10.181


Explanation :




  • cut -d ' ' -f1 : extract first field (ip address)


  • uniq -c : report repeated lines and display the number of occurences





share|improve this answer








New contributor




Mikael Flora is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.



























    3














    Here is one possible solution:





    IN_FILE="file.log"
    for IP in $(awk 'print $1' $IN_FILE | sort -u)
    do
    echo -en "$IPtcount: "
    grep -c "$IP" "$IN_FILE"
    done


    • replace file.log with the actual file name.

    • the command substitution expression $(awk 'print $1' $IN_FILE | sort -u) will provide a list of the unique values of the first column.

    • then grep -c will count each of these value within the file.


    $ IN_FILE="file.log"; for IP in $(awk 'print $1' $IN_FILE | sort -u); do echo -en "$IPtcount: "; grep -c "$IP" "$IN_FILE"; done
    13.57.220.172 count: 9
    13.57.233.99 count: 1
    18.206.226.75 count: 2
    18.213.10.181 count: 3
    5.135.134.16 count: 5





    share|improve this answer






























      3














      You can use grep and uniq for the list of addresses, loop over them and grep again for the count:



      for i in $(<log grep -o '^[^ ]*' | uniq); do
      printf '%s count %dn' "$i" $(<log grep -c "$i")
      done


      Example run



      $ for i in $(<log grep -o '^[^ ]*'|uniq);do printf '%s count %dn' "$i" $(<log grep -c "$i");done
      5.135.134.16 count 5
      13.57.220.172 count 9
      13.57.233.99 count 1
      18.206.226.75 count 2
      18.213.10.181 count 3




      share






























        3














        If you really need the given output format, then since your input is already sorted, a single-pass way to do it in Awk would be



        awk '
        NR==1 last=$1
        $1 != last print last, "count: " c[last]; last = $1
        c[$1]++
        END print last, "count: " c[last]
        '


        Ex.



        $ awk 'NR==1 last=$1 $1 != last print last, "count: " c[last]; last = $1 c[$1]++ ENDprint last, "count: " c[last]' log
        5.135.134.16 count: 5
        13.57.220.172 count: 9
        13.57.233.99 count: 1
        18.206.226.75 count: 2
        18.213.10.181 count: 3


        Otherwise, I would recommend this cut + uniq based answer




        If not already sorted, then



        awk 'c[$1]++ ENDfor(i in c) print i, "count: " c[i]' log


        (This works on sorted input as well, however unnecessarily reads all the IPs into memory.)





        share

























          Your Answer








          StackExchange.ready(function()
          var channelOptions =
          tags: "".split(" "),
          id: "89"
          ;
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function()
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled)
          StackExchange.using("snippets", function()
          createEditor();
          );

          else
          createEditor();

          );

          function createEditor()
          StackExchange.prepareEditor(
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          bindNavPrevention: true,
          postfix: "",
          imageUploader:
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          ,
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          );



          );













          draft saved

          draft discarded


















          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2faskubuntu.com%2fquestions%2f1129521%2fcount-occurances-of-text-in-file-with-bash%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown

























          4 Answers
          4






          active

          oldest

          votes








          4 Answers
          4






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          5














          You can use cut and uniq tools:



          cut -d ' ' -f1 test.txt | uniq -c
          5 5.135.134.16
          9 13.57.220.172
          1 13.57.233.99
          2 18.206.226.75
          3 18.213.10.181


          Explanation :




          • cut -d ' ' -f1 : extract first field (ip address)


          • uniq -c : report repeated lines and display the number of occurences





          share|improve this answer








          New contributor




          Mikael Flora is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
          Check out our Code of Conduct.
























            5














            You can use cut and uniq tools:



            cut -d ' ' -f1 test.txt | uniq -c
            5 5.135.134.16
            9 13.57.220.172
            1 13.57.233.99
            2 18.206.226.75
            3 18.213.10.181


            Explanation :




            • cut -d ' ' -f1 : extract first field (ip address)


            • uniq -c : report repeated lines and display the number of occurences





            share|improve this answer








            New contributor




            Mikael Flora is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
            Check out our Code of Conduct.






















              5












              5








              5







              You can use cut and uniq tools:



              cut -d ' ' -f1 test.txt | uniq -c
              5 5.135.134.16
              9 13.57.220.172
              1 13.57.233.99
              2 18.206.226.75
              3 18.213.10.181


              Explanation :




              • cut -d ' ' -f1 : extract first field (ip address)


              • uniq -c : report repeated lines and display the number of occurences





              share|improve this answer








              New contributor




              Mikael Flora is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
              Check out our Code of Conduct.










              You can use cut and uniq tools:



              cut -d ' ' -f1 test.txt | uniq -c
              5 5.135.134.16
              9 13.57.220.172
              1 13.57.233.99
              2 18.206.226.75
              3 18.213.10.181


              Explanation :




              • cut -d ' ' -f1 : extract first field (ip address)


              • uniq -c : report repeated lines and display the number of occurences






              share|improve this answer








              New contributor




              Mikael Flora is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
              Check out our Code of Conduct.









              share|improve this answer



              share|improve this answer






              New contributor




              Mikael Flora is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
              Check out our Code of Conduct.









              answered 13 mins ago









              Mikael FloraMikael Flora

              512




              512




              New contributor




              Mikael Flora is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
              Check out our Code of Conduct.





              New contributor





              Mikael Flora is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
              Check out our Code of Conduct.






              Mikael Flora is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
              Check out our Code of Conduct.























                  3














                  Here is one possible solution:





                  IN_FILE="file.log"
                  for IP in $(awk 'print $1' $IN_FILE | sort -u)
                  do
                  echo -en "$IPtcount: "
                  grep -c "$IP" "$IN_FILE"
                  done


                  • replace file.log with the actual file name.

                  • the command substitution expression $(awk 'print $1' $IN_FILE | sort -u) will provide a list of the unique values of the first column.

                  • then grep -c will count each of these value within the file.


                  $ IN_FILE="file.log"; for IP in $(awk 'print $1' $IN_FILE | sort -u); do echo -en "$IPtcount: "; grep -c "$IP" "$IN_FILE"; done
                  13.57.220.172 count: 9
                  13.57.233.99 count: 1
                  18.206.226.75 count: 2
                  18.213.10.181 count: 3
                  5.135.134.16 count: 5





                  share|improve this answer



























                    3














                    Here is one possible solution:





                    IN_FILE="file.log"
                    for IP in $(awk 'print $1' $IN_FILE | sort -u)
                    do
                    echo -en "$IPtcount: "
                    grep -c "$IP" "$IN_FILE"
                    done


                    • replace file.log with the actual file name.

                    • the command substitution expression $(awk 'print $1' $IN_FILE | sort -u) will provide a list of the unique values of the first column.

                    • then grep -c will count each of these value within the file.


                    $ IN_FILE="file.log"; for IP in $(awk 'print $1' $IN_FILE | sort -u); do echo -en "$IPtcount: "; grep -c "$IP" "$IN_FILE"; done
                    13.57.220.172 count: 9
                    13.57.233.99 count: 1
                    18.206.226.75 count: 2
                    18.213.10.181 count: 3
                    5.135.134.16 count: 5





                    share|improve this answer

























                      3












                      3








                      3







                      Here is one possible solution:





                      IN_FILE="file.log"
                      for IP in $(awk 'print $1' $IN_FILE | sort -u)
                      do
                      echo -en "$IPtcount: "
                      grep -c "$IP" "$IN_FILE"
                      done


                      • replace file.log with the actual file name.

                      • the command substitution expression $(awk 'print $1' $IN_FILE | sort -u) will provide a list of the unique values of the first column.

                      • then grep -c will count each of these value within the file.


                      $ IN_FILE="file.log"; for IP in $(awk 'print $1' $IN_FILE | sort -u); do echo -en "$IPtcount: "; grep -c "$IP" "$IN_FILE"; done
                      13.57.220.172 count: 9
                      13.57.233.99 count: 1
                      18.206.226.75 count: 2
                      18.213.10.181 count: 3
                      5.135.134.16 count: 5





                      share|improve this answer













                      Here is one possible solution:





                      IN_FILE="file.log"
                      for IP in $(awk 'print $1' $IN_FILE | sort -u)
                      do
                      echo -en "$IPtcount: "
                      grep -c "$IP" "$IN_FILE"
                      done


                      • replace file.log with the actual file name.

                      • the command substitution expression $(awk 'print $1' $IN_FILE | sort -u) will provide a list of the unique values of the first column.

                      • then grep -c will count each of these value within the file.


                      $ IN_FILE="file.log"; for IP in $(awk 'print $1' $IN_FILE | sort -u); do echo -en "$IPtcount: "; grep -c "$IP" "$IN_FILE"; done
                      13.57.220.172 count: 9
                      13.57.233.99 count: 1
                      18.206.226.75 count: 2
                      18.213.10.181 count: 3
                      5.135.134.16 count: 5






                      share|improve this answer












                      share|improve this answer



                      share|improve this answer










                      answered 11 mins ago









                      pa4080pa4080

                      14.7k52872




                      14.7k52872





















                          3














                          You can use grep and uniq for the list of addresses, loop over them and grep again for the count:



                          for i in $(<log grep -o '^[^ ]*' | uniq); do
                          printf '%s count %dn' "$i" $(<log grep -c "$i")
                          done


                          Example run



                          $ for i in $(<log grep -o '^[^ ]*'|uniq);do printf '%s count %dn' "$i" $(<log grep -c "$i");done
                          5.135.134.16 count 5
                          13.57.220.172 count 9
                          13.57.233.99 count 1
                          18.206.226.75 count 2
                          18.213.10.181 count 3




                          share



























                            3














                            You can use grep and uniq for the list of addresses, loop over them and grep again for the count:



                            for i in $(<log grep -o '^[^ ]*' | uniq); do
                            printf '%s count %dn' "$i" $(<log grep -c "$i")
                            done


                            Example run



                            $ for i in $(<log grep -o '^[^ ]*'|uniq);do printf '%s count %dn' "$i" $(<log grep -c "$i");done
                            5.135.134.16 count 5
                            13.57.220.172 count 9
                            13.57.233.99 count 1
                            18.206.226.75 count 2
                            18.213.10.181 count 3




                            share

























                              3












                              3








                              3







                              You can use grep and uniq for the list of addresses, loop over them and grep again for the count:



                              for i in $(<log grep -o '^[^ ]*' | uniq); do
                              printf '%s count %dn' "$i" $(<log grep -c "$i")
                              done


                              Example run



                              $ for i in $(<log grep -o '^[^ ]*'|uniq);do printf '%s count %dn' "$i" $(<log grep -c "$i");done
                              5.135.134.16 count 5
                              13.57.220.172 count 9
                              13.57.233.99 count 1
                              18.206.226.75 count 2
                              18.213.10.181 count 3




                              share













                              You can use grep and uniq for the list of addresses, loop over them and grep again for the count:



                              for i in $(<log grep -o '^[^ ]*' | uniq); do
                              printf '%s count %dn' "$i" $(<log grep -c "$i")
                              done


                              Example run



                              $ for i in $(<log grep -o '^[^ ]*'|uniq);do printf '%s count %dn' "$i" $(<log grep -c "$i");done
                              5.135.134.16 count 5
                              13.57.220.172 count 9
                              13.57.233.99 count 1
                              18.206.226.75 count 2
                              18.213.10.181 count 3





                              share











                              share


                              share










                              answered 9 mins ago









                              dessertdessert

                              25.2k673106




                              25.2k673106





















                                  3














                                  If you really need the given output format, then since your input is already sorted, a single-pass way to do it in Awk would be



                                  awk '
                                  NR==1 last=$1
                                  $1 != last print last, "count: " c[last]; last = $1
                                  c[$1]++
                                  END print last, "count: " c[last]
                                  '


                                  Ex.



                                  $ awk 'NR==1 last=$1 $1 != last print last, "count: " c[last]; last = $1 c[$1]++ ENDprint last, "count: " c[last]' log
                                  5.135.134.16 count: 5
                                  13.57.220.172 count: 9
                                  13.57.233.99 count: 1
                                  18.206.226.75 count: 2
                                  18.213.10.181 count: 3


                                  Otherwise, I would recommend this cut + uniq based answer




                                  If not already sorted, then



                                  awk 'c[$1]++ ENDfor(i in c) print i, "count: " c[i]' log


                                  (This works on sorted input as well, however unnecessarily reads all the IPs into memory.)





                                  share





























                                    3














                                    If you really need the given output format, then since your input is already sorted, a single-pass way to do it in Awk would be



                                    awk '
                                    NR==1 last=$1
                                    $1 != last print last, "count: " c[last]; last = $1
                                    c[$1]++
                                    END print last, "count: " c[last]
                                    '


                                    Ex.



                                    $ awk 'NR==1 last=$1 $1 != last print last, "count: " c[last]; last = $1 c[$1]++ ENDprint last, "count: " c[last]' log
                                    5.135.134.16 count: 5
                                    13.57.220.172 count: 9
                                    13.57.233.99 count: 1
                                    18.206.226.75 count: 2
                                    18.213.10.181 count: 3


                                    Otherwise, I would recommend this cut + uniq based answer




                                    If not already sorted, then



                                    awk 'c[$1]++ ENDfor(i in c) print i, "count: " c[i]' log


                                    (This works on sorted input as well, however unnecessarily reads all the IPs into memory.)





                                    share



























                                      3












                                      3








                                      3







                                      If you really need the given output format, then since your input is already sorted, a single-pass way to do it in Awk would be



                                      awk '
                                      NR==1 last=$1
                                      $1 != last print last, "count: " c[last]; last = $1
                                      c[$1]++
                                      END print last, "count: " c[last]
                                      '


                                      Ex.



                                      $ awk 'NR==1 last=$1 $1 != last print last, "count: " c[last]; last = $1 c[$1]++ ENDprint last, "count: " c[last]' log
                                      5.135.134.16 count: 5
                                      13.57.220.172 count: 9
                                      13.57.233.99 count: 1
                                      18.206.226.75 count: 2
                                      18.213.10.181 count: 3


                                      Otherwise, I would recommend this cut + uniq based answer




                                      If not already sorted, then



                                      awk 'c[$1]++ ENDfor(i in c) print i, "count: " c[i]' log


                                      (This works on sorted input as well, however unnecessarily reads all the IPs into memory.)





                                      share















                                      If you really need the given output format, then since your input is already sorted, a single-pass way to do it in Awk would be



                                      awk '
                                      NR==1 last=$1
                                      $1 != last print last, "count: " c[last]; last = $1
                                      c[$1]++
                                      END print last, "count: " c[last]
                                      '


                                      Ex.



                                      $ awk 'NR==1 last=$1 $1 != last print last, "count: " c[last]; last = $1 c[$1]++ ENDprint last, "count: " c[last]' log
                                      5.135.134.16 count: 5
                                      13.57.220.172 count: 9
                                      13.57.233.99 count: 1
                                      18.206.226.75 count: 2
                                      18.213.10.181 count: 3


                                      Otherwise, I would recommend this cut + uniq based answer




                                      If not already sorted, then



                                      awk 'c[$1]++ ENDfor(i in c) print i, "count: " c[i]' log


                                      (This works on sorted input as well, however unnecessarily reads all the IPs into memory.)






                                      share













                                      share


                                      share








                                      edited 9 secs ago

























                                      answered 5 mins ago









                                      steeldriversteeldriver

                                      70.3k11114186




                                      70.3k11114186



























                                          draft saved

                                          draft discarded
















































                                          Thanks for contributing an answer to Ask Ubuntu!


                                          • Please be sure to answer the question. Provide details and share your research!

                                          But avoid


                                          • Asking for help, clarification, or responding to other answers.

                                          • Making statements based on opinion; back them up with references or personal experience.

                                          To learn more, see our tips on writing great answers.




                                          draft saved


                                          draft discarded














                                          StackExchange.ready(
                                          function ()
                                          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2faskubuntu.com%2fquestions%2f1129521%2fcount-occurances-of-text-in-file-with-bash%23new-answer', 'question_page');

                                          );

                                          Post as a guest















                                          Required, but never shown





















































                                          Required, but never shown














                                          Required, but never shown












                                          Required, but never shown







                                          Required, but never shown

































                                          Required, but never shown














                                          Required, but never shown












                                          Required, but never shown







                                          Required, but never shown







                                          Popular posts from this blog

                                          बाताम इन्हें भी देखें सन्दर्भ दिक्चालन सूची1°05′00″N 104°02′0″E / 1.08333°N 104.03333°E / 1.08333; 104.033331°05′00″N 104°02′0″E / 1.08333°N 104.03333°E / 1.08333; 104.03333

                                          Why is the 'in' operator throwing an error with a string literal instead of logging false?Why can't I use switch statement on a String?Python join: why is it string.join(list) instead of list.join(string)?Multiline String Literal in C#Why does comparing strings using either '==' or 'is' sometimes produce a different result?How to initialize an array's length in javascript?How can I print literal curly-brace characters in python string and also use .format on it?Why does ++[[]][+[]]+[+[]] return the string “10”?Why is char[] preferred over String for passwords?Why does this code using random strings print “hello world”?jQuery.inArray(), how to use it right?

                                          How can we generalize the fact of finite dimensional vector space to an infinte dimensional case?$k[x]$-module and cyclic module over a finite dimensional vector spaceSubspace of a finite dimensional space is finite dimensionalIf V is an infinite-dimensional vector space, and S is an infinite-dimensional subspace of V, must the dimension of V/S be finite? ExplainWhy is an infinite dimensional space so different than a finite dimensional one?base for finite dimensional vector space is not infinite dimensional vector space?Any finite-dimensional vector space is the dual space of anotherHaving Trouble Understanding Meaning Of A Finite-Dimensional Vector SpaceProve that “Every subspaces of a finite-dimensional vector space is finite-dimensional”Ring as a finite dimensional Vector space over a field KQuestion regarding basis and dimension