Hi,
i have a bunch of very big files which _should_ follow a simple line format.
I spotted some errors in these files and now want to search for files
containing at least one line violating the specified format.
As soon as such a line is found grep could terminate, but it doesn't seem to.
The use case i describe is neither plain -l (--files-with-matches) nor -L
(--files-without-match), it's rather --files-with-at-least-one-non-match.
I tried grep -v -l and this seems to work but doesn't do -l's early termination
:(.
Jörn
Toy example for line format 'a b c d':
# insert offender as first line:
echo 'a c d c' > test.tmp
# insert many valid lines (warning ~ 70 MB file):
awk 'BEGIN { for (i=0 ; i < 10000000 ; i++) print "a b c d" }' >> test.tmp
# run grep:
time grep -v -l 'a b c d' test.tmp
test.tmp
real 0m2.758s
user 0m2.692s
sys 0m0.060s
# counter example which is very fast (matches the 2nd line and quits):
time grep -l 'a b c d' test.tmp
test.tmp
real 0m0.032s
user 0m0.000s
sys 0m0.032s