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

What does this shorthand mean?

Customer Requests (Sometimes) Drive Me Bonkers!

How to write papers efficiently when English isn't my first language?

ls Ordering[Ordering[list]] optimal?

Anatomically Correct Mesopelagic Aves

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

Explicit solution of a Hamiltonian system

How to make a variable always equal to the result of some calculations?

Removing read access from a file

How do I get the green key off the shelf in the Dobby level of Lego Harry Potter 2?

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

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

How do scammers retract money, while you can’t?

'Given that' in a matrix

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

How can I open an app using Terminal?

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

When did Lisp start using symbols for arithmetic?

How do I construct this japanese bowl?

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

Can a caster that cast Polymorph on themselves stop concentrating at any point even if their Int is low?

India just shot down a satellite from the ground. At what altitude range is the resulting debris field?

How to write the block matrix in LaTex?

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
    23 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
    23 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 21 mins ago







j0h

















asked 27 mins ago









j0hj0h

6,4801657119




6,4801657119












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

    – dessert
    23 mins ago

















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

    – dessert
    23 mins ago
















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

– dessert
23 mins ago





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

– dessert
23 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|improve this answer






























        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 14 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 12 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|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|improve this answer

























                              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|improve this answer













                              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|improve this answer












                              share|improve this answer



                              share|improve this answer










                              answered 10 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 1 min ago

























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

                                          Best approach to update all entries in a list that is paginated?Best way to add items to a paginated listChoose Your Country: Best Usability approachUpdate list when a user is viewing the list without annoying themWhen would the best day to update your webpage be?What should happen when I add a Row to a paginated, sorted listShould I adopt infinite scrolling or classical pagination?How to show user that page objects automatically updateWhat is the best location to locate the comments section in a list pageBest way to combine filtering and selecting items in a listWhen one of two inputs must be updated to satisfy a consistency criteria, which should you update (if at all)?

                                          Тонконіг бульбистий Зміст Опис | Поширення | Екологія | Господарське значення | Примітки | Див. також | Література | Джерела | Посилання | Навігаційне меню1114601320038-241116202404kew-435458Poa bulbosaЭлектронный каталог сосудистых растений Азиатской России [Електронний каталог судинних рослин Азіатської Росії]Малышев Л. Л. Дикие родичи культурных растений. Poa bulbosa L. - Мятлик луковичный. [Малишев Л. Л. Дикі родичи культурних рослин. Poa bulbosa L. - Тонконіг бульбистий.]Мятлик (POA) Сем. Злаки (Мятликовые) [Тонконіг (POA) Род. Злаки (Тонконогові)]Poa bulbosa Linnaeus, Sp. Pl. 1: 70. 1753. 鳞茎早熟禾 lin jing zao shu he (Description from Flora of China) [Poa bulbosa Linnaeus, Sp. Pl. 1: 70. 1753. 鳞茎早熟禾 lin jing zao shu he (Опис від Флора Китаю)]Poa bulbosa L. – lipnice cibulkatá / lipnica cibulkatáPoa bulbosa в базі даних Poa bulbosa на сайті Poa bulbosa в базі даних «Global Biodiversity Information Facility» (GBIF)Poa bulbosa в базі даних «Euro + Med PlantBase» — інформаційному ресурсі для Євро-середземноморського розмаїття рослинPoa bulbosa L. на сайті «Плантариум»

                                          Вунгтау (аеропорт) Загальні відомості | Див. також | Посилання | Навігаційне меню10°22′00″ пн. ш. 107°05′00″ сх. д. / 10.36667° пн. ш. 107.08333° сх. д. / 10.36667; 107.0833310°22′00″ пн. ш. 107°05′00″ сх. д. / 10.36667° пн. ш. 107.08333° сх. д. / 10.36667; 107.083337731608Vinh AirportVinh airport facelift improves serviceвиправивши або дописавши їївиправивши або дописавши їїр