Anand Rockzz
Anand Rockzz

Reputation: 6658

Why isn't Mac sed isn't matching what I expect?

echo 'iPhone 12 Pro Max (5EF5105C-7EED-4017-979C-A6185E927B84) (Booted)' | sed -En 's,(\w+-\w+-\w+-\w+-\w+),\1,p'

Because I'm using extended regex -E (-r in GNU sed) and -n for print only matched/replaced. Assuming my regex101 is correct, expecting 5EF5105C-7EED-4017-979C-A6185E927B84 in the output, but getting empty.

Upvotes: 1

Views: 43

Answers (1)

Andy Lester
Andy Lester

Reputation: 93636

If you're just trying to get the serial number out from inside the parens, and you're not actually modifying anything, then use grep

$ echo 'iPhone 12 Pro Max (5EF5105C-7EED-4017-979C-A6185E927B84) (Booted)' \
    | grep -E  '\w+-\w+-\w+-\w+-\w+' -o

5EF5105C-7EED-4017-979C-A6185E927B84

-o tells grep "Just output what matched, not the entire line".

Upvotes: 3

Related Questions