[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#21250: sed: empty label for :/b/t commands

From: Stephane Chazelas
Subject: bug#21250: sed: empty label for :/b/t commands
Date: Thu, 13 Aug 2015 15:37:54 +0100
User-agent: Mutt/1.5.21 (2010-09-15)


Not really a bug as such, just a note of how a corner case of
GNU sed syntax parsing is being misused:

Recently, on unix.stackexchange.com, I've seen several times
people (might have been the same person every time) doing things

sed ':;s/../../;t'

That is, define an empty label, and branch on it later on.

There's an example at

as per the documentation, it's not meant to work that way. The
label for ":" is not optional and "t" or "b" without label are
meant to jump to the end (start a new label).

I've warned that person that relying on an unspecified behaviour
was not a good idea as it may no longer work in the future, but
now if several people follow his example, that may mean it will
become a de-facto feature of GNU sed, and then the sed
maintainers would have to make sure it's not removed in future
versions (and document it).

So maybe it would be a good idea to either remove that
"feature" or make it an official one before its usage becomes

In any case the:

sed ': label;s/../../;t label'

syntax is not portable anyway. The POSIX syntax being:

sed -e ': label' -e 's/../../;t label'


sed ':label
s/../../;t label'

Note that at the moment, GNU sed is not POSIX in that sed ':a;b'
is meant to define a label called "a;b", but that's going to change
in the next version of the spec where the behaviour will be
unspecified instead (so GNU sed doesn't need to be changed).


reply via email to

[Prev in Thread] Current Thread [Next in Thread]