How can I count the number of lines matching a pattern returned from a linux command

I want the number of lines returned beginning with 'foo' , so if I pipe the output to grep will this work?

cat | grep -c ^foo
  • 1
    Why do you even ask, if you answered the question by yourself. Or simply check with your next nearest shell.
    – Roman
    Feb 19 '13 at 12:36
  • 3
    Because there may be a better way
    – Dave
    Feb 19 '13 at 13:08
  • 5
    Useless use of cat. grep -c pattern file. Yes it's not that much but as soon as you run that thru a loop that runs a couple of thousand times you'll want to save on forks
    – Martin M.
    Feb 19 '13 at 13:17
  • Then you could instead ask for alternate ways. Also Server Horror's comment should be an answer.
    – Alex Hall
    Dec 14 '17 at 0:05
cat | grep ^foo | wc -l

TO show how many lines containing foo are there.


From grep man page:

****General Output Control****

    -c, --count      Suppress normal output;

instead print a count of matching lines for each input file. With the -v, --invert-match option (see below), count non-matching lines. (-c is specified by POSIX.)


Per Server Horror's comment:

grep -c pattern file

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.