Home > Blockchain >  Count the lines from output using pipeline
Count the lines from output using pipeline

Time:01-19

I am trying to count how many files have words with the pattern [Gg]reen.

    #!/bin/bash
      for File in `ls ./`
      do
      cat ./$File | egrep '[Gg]reen' | sed -n '$='
      done

When I do this I get this output:

1
1
3
1
1

So I want to count the lines to get in total 5. I tried using wc -l after the sed but it didn't work; it counted the lines in all the files. I tried to use >file.txt but it didn't write anything on it. And when I use >> instead it writes but when I execute the shell it appends the lines again.

CodePudding user response:

Since according to your question, you want to know how many files contain a pattern, you are interested in the number of files, not the number of pattern occurances.

For instance,

grep -l '[Gg]reen' *  | wc -l

would produce the number of files which contain somewhere green or Green as a substring.

  •  Tags:  
  • Related