bug-bash
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: efficient way to use matched string in variable substitution


From: Léa Gris
Subject: Re: efficient way to use matched string in variable substitution
Date: Tue, 24 Aug 2021 16:16:46 +0200
User-agent: Telnet/1.0 [tlh] (PDP11/DEC)

Le 24/08/2021 à 15:09, Mike Jonkmans écrivait :
This seems to be the fastest:
f12 () { [[ "$1" =~ ${1//?/(.)} ]]; local arr=( "${BASH_REMATCH[@]:1}" ); }
time for ((i=1; i<=10000; i++)); do f0 682390; done
real    0m0,296s
user    0m0,296s
sys     0m0,000s

Awesome Mike, would you like to add this answer to SO?

It would be very useful there; but I don't want to be wrongly credited for this smart implementation.

time for ((i=1; i<=10000; i++)); do f12 682390; done

real    0m0.223s
user    0m0.223s
sys     0m0.000s

Made it into a fancy utility function:

string2array() {
  # Splits the string's characters into the array
  # $1: The input string
  # $2: The output array name
  [[ "$1" =~ ${1//?/(.)} ]]
  # shellcheck disable=SC2178 # shellcheck broken nameref type check
  local -n arr="$2"
  # shellcheck disable=SC2034 # shellcheck broken nameref usage check
  arr=("${BASH_REMATCH[@]:1}")
}


--
Léa Gris




reply via email to

[Prev in Thread] Current Thread [Next in Thread]