--- Begin Message ---
Subject: |
Patch for easier use in scripting pipelines |
Date: |
Thu, 17 Feb 2022 08:57:10 +0100 |
Greetings!
The attached patch add a `--pipe` option to grep. When used, grep
only exits with with nonzero status on error. In particular, it
doesn't signal "match" / "no match" through the exit code.
Here's an example using Bash:
# enable automatic error handling
set -eo pipefail
# grep for issues in a logfile to produce a report
cat logfile | grep issue | sort --unique
If grep doesn't find "issue" in its input (which is not an error,
obviously), it exits with status 1. Bash interprets this nonzero exit
code as an error and terminates with an error itself.
In order to fix that bug in the above script, you currently have to
replace `grep ...` with `grep ... || [ $? = 1 ]`, which is not really
readable. As alternative, I've implemented a `--pipe` option, which
only returns nonzero on actual errors, but not when there is no match.
This is a bit of a complementary option to `--quiet`.
Open tasks here:
* FSF paperwork is not finished, so obviously the patch can't be
applied yet.
* Should I add a `-p` to complement the long `--pipe`?
* Should I call it `--pipe` at all? The other alternative I came up
with was `--filter`. I don't really like either of them very much.
Cheers!
Uli
gnu-grep-pipe-option.patch
Description: Text Data
--- End Message ---
--- Begin Message ---
Subject: |
Re: bug#54035: Patch for easier use in scripting pipelines |
Date: |
Thu, 24 Feb 2022 11:09:05 -0800 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.5.0 |
On 2/23/22 23:11, Ulrich Eckhardt wrote:
Just for my understanding, grep stops reading
when it finds the first match and then the shell closes the output
stream of cat. That in turn causes cat to fail (exit code 141, meaning
SIGPIPE), because it can't write the rest of the data that it wants,
right?
Right.
I think that short reads (which could cause SIGPIPE) and the
non-error exit code 1 deserve mention there. I'll take a look and
perhaps file another patch.
I installed the attached to try to document this better.
0001-doc-mention-issues-with-set-e.patch
Description: Text Data
--- End Message ---