On 2017-07-28 09:06 AM, Stephen M. Webb wrote:
> 
> You could also go for sed instead.
> 
> $ for c in $(echo A0:B1:C2:D3:E4:F5 | sed 
> 's/\([[:xdigit:]]\{2,2\}\)[^[:xdigit:]]*/ 0x\1/g'); do echo $c; done
> 0xA0
> 0xB1
> 0xC2
> 0xD3
> 0xE4
> 0xF5
> 
> but the readability of that is questionable.

The readability of the sed expression is improved marginally if you switch to 
using extended regular expressions instead
of basic regular expressions.

$ echo A0:B1:C2:D3:E4:F5 | sed -r 's/([[:xdigit:]]{2,2})[^[:xdigit:]]*/\1 /g'
A0 B1 C2 D3 E4 F5

There is no performace difference between using BREs and EREs in this case, and 
using sed is marginally faster than
using grep over several test runs on my machine.

Note that only the sed version (either BRE or ERE) is POSIX.  "grep -o" is a 
GNU extension.

-- 
Stephen M. Webb  <stephen.w...@bregmasoft.ca>
_______________________________________________
Linux mailing list
Linux@lists.oclug.on.ca
http://oclug.on.ca/mailman/listinfo/linux

Reply via email to