On Sunday, November 24th, 2024 at 3:05 AM, Lawrence Velázquez <v...@larryv.me> 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 - marcel.plch@proton.me - 0x1094A451.asc
Description: application/pgp-keys
signature.asc
Description: OpenPGP digital signature