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

Return of the Riley Riddles in Reverse

Is it a good idea to use COLUMN AS (left([Another_Column],(4)) instead of LEFT in the select?

How can I get through very long and very dry, but also very useful technical documents when learning a new tool?

Is a stroke of luck acceptable after a series of unfavorable events?

Why is Miller's case titled R (Miller)?

Horror movie/show or scene where a horse creature opens its mouth really wide and devours a man in a stables

declare as function pointer and initialize in the same line

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

Increase performance creating Mandelbrot set in python

Are there languages with no euphemisms?

Removing read access from a file

Why do professional authors make "consistency" mistakes? And how to avoid them?

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

Solution of this Diophantine Equation

'Given that' in a matrix

Can the Reverse Gravity spell affect the Meteor Swarm spell?

Under what conditions does the function C = f(A,B) satisfy H(C|A) = H(B)?

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

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

Anatomically Correct Strange Women In Ponds Distributing Swords

Is there a good way to store credentials outside of a password manager?

Implement the Thanos sorting algorithm

What happens if you roll doubles 3 times then land on "Go to jail?"

How should I support this large drywall patch?



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 22 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 15 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

                                          acmart: Multiple authors: all with same affiliation, one author an additional affiliationHow to Write Names of Multiple Authors with Shared Affiliation in ACM 2017 Template?Multiple authors with different primary affiliation, but same additional affiliationSame affiliation for all authors without extra packagesIOS-Book-Article.cls: one author with multiple affiliationacmart: Shared Author AffiliationMultiple authors with different primary affiliation, but same additional affiliationAuthor affiliation with only 1 authorAdding Multiple Authors with Different Affiliation in LaTeX ArticleLaTeX: Multiple authors stays on same lineHow to Label Multiple Authors with Same DescriptionHow to make two authors use the same affiliationTwo authors with same affiliation on finished front page

                                          How to write “ä” and other umlauts and accented letters in bibliography?Accents in BibTeXSorting references with special characters alphabeticallyUse ae ligature in bibliographyEastern European nameInverted circumflex in BibTexBibTex, non-ascii initials and nameptr fproblems with accent in LatexHow to add a Ø to my bibliography from Jabref?References without accentsTroubles when trying to cite St“omer-Verlet in ”title" field of a bib entryComprehensive list of accented charactersHow to type the letter “i” with two dots (diaeresis) in math mode?Problem with glossary text and accented lettersSpecial character in bibliographyAccented letters, Unicode and LaTeX accentsHow to stop natbib from modifying bibliography styleCitation of a paper with non-standard characters by BibtexWrite accented characters to file using writeHow to group the bibliography alphabetically, if some surnames start with “accented” characters?How can I automatically capitalize significant words in my bibliography?

                                          How to force a table into page width?How to make table spanning textwidthMaking table width fit into text widthTable with tabular, column type p grabbing available spaceMaking widths of tables equal to width of textblocklatex tabular width the same as the textwidthMake tabular span textwidth exactlySet width of table to be the whole line or a given portion of itIs the tabu package obsolete?What is the difference between tabular, tabular* and tabularx environments?How can i set the width of a table?Making table width fit into text widthTabular and grid typesettingMake table use page widthTable exceeds page widthtable width automatically to page widthHow to shrink table to page widthForce table column to be zero widthTable width exceeds the page widthTable extending beyond the page widthforce longtable to text width