GNU bug report logs - #27354
strange behavior of sed

Previous Next

Package: sed;

Reported by: Han Lu <luhanwa <at> gmail.com>

Date: Wed, 14 Jun 2017 04:10:02 UTC

Severity: normal

Tags: notabug

Done: Assaf Gordon <assafgordon <at> gmail.com>

Bug is archived. No further changes may be made.

Full log


Message #10 received at control <at> debbugs.gnu.org (full text, mbox):

From: Assaf Gordon <assafgordon <at> gmail.com>
To: Han Lu <luhanwa <at> gmail.com>
Cc: 27354-done <at> debbugs.gnu.org
Subject: Re: bug#27354: strange behavior of sed
Date: Wed, 14 Jun 2017 14:58:35 +0000
tag 27354 notabug
thanks

Hello, 

On Wed, Jun 14, 2017 at 11:48:41AM +0800, Han Lu wrote:
[...]
>The below command works as expected.
>~$ sed -e 's/127.0.0.1/127/' -e "1i 127.0.0.1 localhost\n127.0.0.1
[...]
>But command below is not working as expeced:
>~$ sed -e '/127.0.0.1/d' -e "1i 127.0.0.1 localhost\n127.0.0.1

First,
thank you for providing such clear information on how to
reproduce your output - it makes troubleshooting much easier.

This is not a bug in sed, but a side-effect of the 'd' (=delete)
command: when sed executes the 'd' command, it immediately starts
a new cycle (i.e. skips all other commands, reads the next line of the 
input, and starts from the first sed command).

In your example, the sequence is:
1. sed reads the first input line (it contains '127.0.0.1')
2. the 'd' command is executed - line is deleted and not printed,
  and sed restarts a new cycle:
  it skips all other commands and reads the next input line.
4. The first time the '1i' command is executed, sed is already
  on the second input line, and the address '1' is never matched -
  the command is never executed.

This also explains why it does work when you add a dummy comment line:
The '/127.0.0.1/d' does not match the first line,
and then the '1i' command is matched and executed.

A simple work-around would be to put the 'i' command
before the 'd' command, like so:

   sed -e '1i 127.0.0.1 ....' -e '/127/d'

As such, I'm marking this as 'not a bug',
but discussion can continue by replying to this thread.

regards,
- assaf







This bug report was last modified 7 years and 339 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.