|
From: | GNU bug Tracking System |
Subject: | bug#62144: closed (Unexpected output) |
Date: | Tue, 14 Mar 2023 16:25:02 +0000 |
Your message dated Tue, 14 Mar 2023 09:24:28 -0700 with message-id <CA+8g5KEPG_rnXk-Y8sTYG5cDN3Kq-M8SQVNro5h_1Qxz6ux73A@mail.gmail.com> and subject line Re: bug#62144: Unexpected output has caused the debbugs.gnu.org bug report #62144, regarding Unexpected output to be marked as done. (If you believe you have received this mail in error, please contact help-debbugs@gnu.org.) -- 62144: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=62144 GNU Bug Tracking System Contact help-debbugs@gnu.org with problems
--- Begin Message ---Subject: Unexpected output Date: Sun, 12 Mar 2023 09:05:37 +0100 Hello, User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.8.0
I have found an unexpected behavior of sed. I would expect the same output for the following commands:
sed '/root/!d' /etc/passwd
sed '/root/{ !d }' /etc/passwd
$ sed --version
sed (GNU sed) 4.7
Packaged by Debian
Copyright (C) 2018 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Written by Jay Fenlason, Tom Lord, Ken Pizzini,
Paolo Bonzini, Jim Meyering, and Assaf Gordon.
GNU sed home page: <https://www.gnu.org/software/sed/>.
General help using GNU software: <https://www.gnu.org/gethelp/>.
Fehlerberichte bitte per E-Mail (auf englisch) an: <bug-sed@gnu.org>.
Seen ouotput:
$ sed '/root/!d' /etc/passwd
root:x:0:0:root:/root:/bin/bash
$ sed '/root/{ !d }' /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
... the whole file
BR,
Stefan Scheruebl
--- End Message ---
--- Begin Message ---Subject: Re: bug#62144: Unexpected output Date: Tue, 14 Mar 2023 09:24:28 -0700 tags 62144 notabug stop On Sun, Mar 12, 2023 at 7:24 AM walonen <walonen@gmx.net> wrote: > I have found an unexpected behavior of sed. I would expect the same > output for the following commands: > > sed '/root/!d' /etc/passwd > sed '/root/{ !d }' /etc/passwd Thanks for the report, but the '!' modifier must be applied to an address specification, so your latter command should be spelled like this: sed '/root/!{ d }' /etc/passwd and that is equivalent to the first one. Quoting the info documentation on this topic: Appending the '!' character to the end of an address specification (before the command letter) negates the sense of the match. That is, if the '!' character follows an address or an address range, then only lines which do _not_ match the addresses will be selected. The following command replaces the word 'hello' with 'world' only in lines _not_ containing the word 'apple': sed '/apple/!s/hello/world/' input.txt > output.txt The following command replaces the word 'hello' with 'world' only in lines 1 to 3 and 18 till the last line of the input file (i.e. excluding lines 4 to 17): sed '4,17!s/hello/world/' input.txt > output.txt
--- End Message ---
[Prev in Thread] | Current Thread | [Next in Thread] |