This may have been asked before but I couldn't find it. I am grepping a lot of data files for "NaN" to search for errors; the problem is that if "NaN" appears once in a file, in all likelihood it will appear thousands of times and hence the output will be unmanageable. Specifically, the command

grep "NaN" *

yields about a gigabyte of output, virtually all of which is redundant. How do I suppress all the specific lines where "NaN" appears and instead print only the name of the file?

1 Answer 1

grep -l "Nan" *

Or, if you want to start nixing output, grep "NaN" * | grep -v ...

I probably should also mention another possible next step, which is

grep -l "NaN" * | xargs grep ...

as grep needs filenames to work on for a second pass with a new search term.


You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .