My most common grep phrase is grep -iIRn - good for searching in code (when IDE can't find something). You can remove -i if you care about case, but I mostly used it for plsql code, and that's not case-sensitive.
-r everyone needs, but usually -R is a better default since it does not ignore symlinks
-h I practically never use since I'm almost always using grep to find what file I need to further investigate and letting the stuff down the | line deal with it
-o makes sense, kinda, I want to do that in the next stage of the pipe, maybe I have used it once? cant remember
but -w... I feel like I'm missing something there.
I think what you are doing here is search, but -o and -w shine at data extraction and data manipulation. Things you would use Excel for, except on multiple GB files.
If you are not using search, but are using a recursive (-r) grep, then you are feeding a bunch of data to your pipe but don't care what file it came from. I get that... I mirrored the SEC's ftp back when it was ftp... and it's interesting for correlation and name stuff... but that's not going to work because it's freeform, and it's millions of small files... so you are using (large) files with a known format? Something like spectral datasets where the fields are passed with the data prefixed with it's important tags? Maybe logs?
grep -whor '[A-Z][A-Za-z]*Exception' * | sort | uniq -c
for a histogram of exceptions inside logs downloaded from a bunch of nodes.As for -w, my favourite case is https://unix.stackexchange.com/questions/110645/select-lines...
As for -o,
grep -o ........-....-....-....-............
It may look like Morse code, but what it does is greps UUIDs out.