Skip to content
Vidar Holen edited this page Oct 4, 2015 · 2 revisions

Consider using grep -c instead of grep|wc.

Problematic code:

grep foo | wc -l

Correct code:

grep -c foo

Rationale:

This is purely a stylistic issue. grep can count lines without piping to wc.

Note that in many cases, this number is only used to see whether there are matches (i.e. > 0). In these cases, it's better and more efficient to use grep -q and check its exit status:

if grep -q pattern file
then
  echo "The file contains the pattern"
fi

Exceptions

If you e.g. want to count characters instead of lines, and you actually care about the number and not just whether it's greater than 0.

Clone this wiki locally