Quiero dividir 'hello'
en h e l l o
en una matriz utilizando sólo golpe, que podría hacerlo en sed con sed 's/./& /g'
pero quiero saber cómo dividir una cadena en una matriz en Bash cuando no sé lo que sería el delimitador o el delimitador es cualquier solo personaje No creo que pueda usar ${i// /}
sin un poco de creatividad porque el delimitador es un desconocido, y no creo que esa expresión acepte expresiones regulares. Intenté usar BASH_REMATCH con [[string = ~ ([az].). *]] Pero no funciona como esperaba. ¿Cuál es la forma correcta de usar solo bash para lograr un string.split()
tipo de comportamiento? La razón es que estoy tratando de escribir la utilidad rev en todo bash:
while read data; do
word=($(echo $data|tr ' ' '_'|sed 's/./& /g'))
new=()
i=$((${#word[@]} - 1))
while [[ $i -ge 0 ]]; do
new+=(${word[$i]})
(( i-- ))
done
echo ${new[@]}|tr -d ' '|tr '_' ' '
done
Pero usé tr y sed, quiero saber cómo hacer la división correctamente y luego lo arreglaré para que sea todo bash. Solo por diversión.
[[ $string =~ ${string//?/(.)} ]]
establecerá BASH_REMATCH[]
según sea necesario, vea mi respuesta a la pregunta a la que Peter Mortensen se vincula para obtener una explicación.