On Sunday, November 24th, 2024 at 3:05 AM, Lawrence Velázquez <[email protected]> wrote:
> On Sat, Nov 23, 2024, at 7:11 PM, marcel.plch via Bug reports for the GNU
> Bourne Again SHell wrote:
>
> > I am trying to do some file management in bash and I have strings in
> > this format:
> >
> > 1 dir/hello.txt
> > 2 dir2/bar.jpg
> >
> > When I run this substitution:
> > ${FOO/[:space:]*/Hello}
> > I get this result:
> > 1 dir/hHello
> >
> > The goal is to substitute everything after the first space (including
> > the space) with Hello
> >
> > Seems like a bug to me.
>
>
> It is not a bug. Your pattern is incorrect; you should be using
> "[[:space:]]", not "[:space:]". The former is a bracket expression
> containing the character class expression for the "space" character
> class, while the latter is a bracket expression that matches any
> of the characters ":", "s", "p", "a", "c", or "e".
>
> $ FOO='1 dir/hello.txt'
> $ echo "${FOO/[[:space:]]*/Hello}"
> 1Hello
>
> --
> vq
Thank you for clarifictaion.
Maybe adding an extra clarification to the bash manpage
in the Pattern Matching section would be a good idea?
I can imagine I'm not the only one who read this with
a bit of misunderstanding, leading to a few lost hours.
--
Dormouse
publickey - [email protected] - 0x1094A451.asc
Description: application/pgp-keys
signature.asc
Description: OpenPGP digital signature
