GNU bug report logs -
#41700
grep -v always exiting with 1 for empty file
Previous Next
Reported by: Andi Kleen <andi <at> firstfloor.org>
Date: Thu, 4 Jun 2020 04:33:01 UTC
Severity: normal
Tags: notabug
Done: Paul Eggert <eggert <at> cs.ucla.edu>
Bug is archived. No further changes may be made.
Full log
Message #29 received at 41700 <at> debbugs.gnu.org (full text, mbox):
On 6/4/20 3:27 PM, Paul Eggert wrote:
> On 6/4/20 12:30 PM, Andi Kleen wrote:
>
>> in your definition would
>>
>> echo -n foo > file
>>
>> (so no newline, but non zero length)
>
> No, the file has zero length:
>
> $ echo -n >file
You missed the 'echo -n foo' that prints 3 bytes to file.
> $ ls -l file
> -rw-r--r-- 1 eggert eggert 0 Jun 4 13:24 file
>> have one or zero lines?
>
> Empty files have no lines.
>
> On 6/4/20 1:13 PM, Eric Blake wrote:
>> The most intuitive behavior is that grep behaves as if the file included the
>> trailing newline
>
> That's what grep does with files that end in a non-newline byte; such files are
> also not text files so POSIX does not specify the behavior.
I answered the question about the 3-byte file. The 0-byte file _IS_ a
text file, consisting of zero lines.
> But grep, like other
> GNU tools, treats empty files as if they contain no lines; this matches most
> people's intuition.
POSIX actually requires this behavior for an empty file.
--
Eric Blake, Principal Software Engineer
Red Hat, Inc. +1-919-301-3226
Virtualization: qemu.org | libvirt.org
This bug report was last modified 4 years and 240 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.