Unix / Linux: grep Word Count Command

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:

ADVERTISEMENTS

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
🐧 Get the latest tutorials on SysAdmin, Linux/Unix, Open Source/DevOps topics:
CategoryList of Unix and Linux commands
File Managementcat
Network Utilitiesdig host ip nmap
Package Managerapk apt
Processes Managementbg chroot disown fg jobs killall kill pidof pstree pwdx time
Searchinggrep whereis which
User Informationgroups id lastcomm last lid/libuser-lid logname members users whoami who w

ADVERTISEMENTS
1 comment… add one
  • MacATDBB Feb 3, 2014 @ 13:11

    “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 Reply

Your email address will not be published.

Use HTML <pre>...</pre>, <code>...</code> and <kbd>...</kbd> for code samples.