Bash realiza la división de palabras en cadenas por sí mismo; de hecho, la mayoría de las veces, evitar eso es un problema, y la razón por la que citar es tan importante. Es fácil aprovechar eso en su caso:simplemente coloque su cadena en una matriz sin citarla; bash usará la división de palabras para separar los elementos individuales. Suponiendo que su cadena esté almacenada en la variable $str
,
ar=($str) # no quotes!
devolverá una matriz de 5 elementos. Su índice de matriz es su índice de palabras (contando desde 0, como en la mayoría de los lenguajes de secuencias de comandos y programación), es decir, se accede a "Edad" usando
${ar[1]} # 0 => Name, 1 => Age, 2 => Sex, 3 => ID, 4 => Address
o, si necesita encontrar el índice del elemento por contenido, recorra la matriz, es decir,
function el_index {
cnt=0; for el in "${ar[@]}"; do
[[ $el == "$1" ]] && echo $cnt && break
((++cnt))
done
}
el_index "Age" # => 1
$ export FOO="Name Age Sex ID Address"
Reemplace *Edad con Edad -- esto eliminará cualquier cosa antes de "Edad":
$ echo ${FOO/*Age/Age}
Age Sex ID Address
Obtenga cualquier cosa antes de "Edad"
$ echo ${FOO/Age*/}
Name
Obtenga la longitud de esa cadena (que es el índice de "Edad"):
$ BEGIN=${FOO/Age*/}
$ echo ${#BEGIN}
7