Piping 2 grep commands into wc

Aaron

I have a file called a.txt that is 100 lines long.

grep    rake a.txt | wc    #returns 10 lines

grep -v rake a.txt | wc    #returns 90 lines

grep    Rake a.txt | wc    #returns  3 lines

one of these 100 lines has both, but I want lines with only 'Rake'. I have tried grep Rake a.txt | grep -v rake a.txt | wc returns 90 lines?

I want to find all 3 lines with 'Rake', pipe it into grep, find if any of those 3 lines include 'Rake' but not 'rake', and then use wc to count the lines that do. I could use redirect to make another file and then grep -v that new file, but that's not really my goal here. I'm sure it's something simple, but how do I fix my command?

fedorqui 'SO stop harming'

I have tried grep Rake a.txt | grep -v rake a.txt | wc returns 90 lines?

The point of piping is that the output of a command feeds the next one. Instead, you are piping and then saying grep -v rake a.txt, which makes the previous command superfluous.

So you just need to pipe normally:

grep Rake a.txt | grep -v rake   | wc
#                              ^
#                             removed a.txt

You can also use awk and tell it to count lines containing Rake, not rake. Finally, print the counter:

awk '/Rake/ && !/rake/ {count++} END {print count+0}' a.txt

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related