Unix / Linux: grep Word Count Command

Posted on in Categories last updated May 5, 2012

How do I count words using grep command under Linux / Unix like operating systems?

You can pass the -c option to grep command to suppress normal output and display a count of matching lines for each input file. The syntax is follows:

grep -c "word" file
grep -c "string" file

In this example, search for a word called ‘var’ and display a count of matching lines:

grep -c 'var' /etc/passwd

Sample outputs:

23

You can pass the -v option to count non-matching lines:

grep -v 'var' /etc/passwd

However, this will not count words. To count exact matched words, enter:

grep -o -w 'word' /path/to/file/ | wc -w

The grep -o command will only display matched words and the wc -c command will display the word counts:

grep -o -w 'foo' bar.txt | wc -w

Posted by: Vivek Gite

The author is the creator of nixCraft and a seasoned sysadmin and a trainer for the Linux operating system/Unix shell scripting. He has worked with global clients and in various industries, including IT, education, defense and space research, and the nonprofit sector. Follow him on Twitter, Facebook, Google+.

1 comment

  1. “The grep -o command will only display matched words and the wc -c command will display the word counts”

    Should this be wc -w per the example code? wc -c will display the byte count?

Leave a Comment