Samuel Sieb, Wed, 4 May 2016 10:42:20 -0700:
On 05/04/2016 10:09 AM, Jon LaBadie wrote:
> The '*' means "zero or more digits". Don't forget that zero.
> The first match is where there are zero digits, i.e. at the
> beginning of the line. So sed replaces it with "//" (nothing).
>
However, usually regexps are greedy so they match as much as possible,
not the minimum.
And that's what it does. It matches the empty string at the beginning of
the line - and it would also (greedily) match digits at the beginning of
the line, but there are none. Try
echo '123This is a test 12335 and 669384 535xy4' | sed 's/[0-9]*//'
And somehow it does work when you use /g so it is
matching more.
No, it's not matching *more*, it's matching *again* (that's exactly what
the g flag tells it to).
--
Regards
mks