count occurances of text in file with bash The Next CEO of Stack OverflowCount duplicated...

The King's new dress

Why do remote companies require working in the US?

How to use tikz in fbox?

Why does standard notation not preserve intervals (visually)

I believe this to be a fraud - hired, then asked to cash check and send cash as Bitcoin

Unreliable Magic - Is it worth it?

Is it okay to store user locations?

How should I support this large drywall patch?

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

Implement the Thanos sorting algorithm

Are there languages with no euphemisms?

Why here is plural "We went to the movies last night."

What can we do to stop prior company from asking us questions?

How do I construct this japanese bowl?

Is HostGator storing my password in plaintext?

Explicit solution of a Hamiltonian system

A pseudo-riley?

How to make a software documentation "officially" citable?

Grabbing quick drinks

Why is there a PLL in CPU?

What is meant by a M next to a roman numeral?

When did Lisp start using symbols for arithmetic?

Apart from "berlinern", do any other German dialects have a corresponding verb?

Why does GHC infer a monomorphic type here, even with MonomorphismRestriction disabled?



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
    19 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
    19 mins ago














2












2








2


1






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 17 mins ago







j0h

















asked 22 mins ago









j0hj0h

6,4801657119




6,4801657119













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

    – dessert
    19 mins ago



















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

    – dessert
    19 mins ago

















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

– dessert
19 mins ago





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

– dessert
19 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































      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 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]++} END{print 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





        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 10 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




























                    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


























                      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













                      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











                      share


                      share










                      answered 7 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 6 mins ago









                              dessertdessert

                              25.2k673106




                              25.2k673106























                                  3














                                  If you really need the given output format, then 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]++} END{print 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





                                  share




























                                    3














                                    If you really need the given output format, then 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]++} END{print 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





                                    share


























                                      3












                                      3








                                      3







                                      If you really need the given output format, then 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]++} END{print 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





                                      share













                                      If you really need the given output format, then 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]++} END{print 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






                                      share











                                      share


                                      share










                                      answered 2 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

                                          Parapolítica Índice Antecedentes El escándalo Proceso judicial Consecuencias Véase...

                                          How to remove border from elements in the last row?Targeting flex items on the last rowHow to vertically wrap...

                                          Tecnologías entrañables Índice Antecedentes Desarrollo Tecnologías Entrañables en la...