Skip to content

Manipulacion De Strings


Terminal window
cadena="Hola Mundo"
  • Siempre usar comillas sí hay espacios.
  • No existen tipos como en otros lenguajes, todo es texto.

Terminal window
echo "$(#cadena)" ## 10

Terminal window
echo "$\{cadena:0:4\}" ## Hola (desde índice 0, tomar 4)
echo "$\{cadena:5\}" ## Mundo (desde índice 5 hasta el final)

Terminal window
texto="banana"
echo "\${texto/na/NA}" ## baNAna (primer reemplazo)
echo "\${texto//na/NA}" ## baNANA (todos los reemplazos)
echo "\${texto/na/}" ## baana (borra primer "na")
echo "\${texto//na/}" ## baa (borra todos "na")

Terminal window
archivo="documento.txt"
echo "\${archivo%.txt}" ## documento (quita sufijo .txt)
echo "\${archivo#doc}" ## umento.txt (quita prefijo doc) # Con doble signo borra lo más largo ruta="/home/user/docs/file.txt" echo "{"\${ruta##*/}"}" # file.txt (quita todo hasta el último /) echo "{"\${ruta %%/*}"}" # vacío (quita todo desde el primer /)

Terminal window
nombre="Francisco"
saludo="Hola, $nombre"
echo "$saludo"

También:

Terminal window
full="Hola"
full+=" Mundo"
echo "$full" ## Hola Mundo

7. Convertir mayúsculas / minúsculas (Bash 4+)

Section titled “7. Convertir mayúsculas / minúsculas (Bash 4+)”
Terminal window
texto="hola mundo"
echo "\${texto^^}" ## HOLA MUNDO
echo "\${texto,,}" ## hola mundo

Terminal window
cadena="programacion"
if [[ "$cadena" == *"grama"- ]]; then
echo "Contiene 'grama'"
fi

Con IFS (Internal Field Separator):

Terminal window
frase="uno dos tres"
IFS=" " read -r -a palabras <<< "$frase"
echo "\${palabras[0]}" ## uno
echo "\${palabras[1]}" ## dos
echo "\${palabras[2]}" ## tres

Terminal window
lista=("a" "b" "c")
echo "\${lista[*]}" ## a b c
echo "\${lista[@]}" ## a b c

Con separador personalizado:

Terminal window
IFS=","; echo "\${lista[*]}" ## a,b,c

Terminal window
cadena="abc123"
if [[ "$cadena" =~ ^[a-z]+[0-9]+$ ]]; then
echo "Coincide con letras seguidas de números"
fi

Terminal window
texto="Hola"
for (( i=0; i<\$; i++ )); do
echo "\${texto:$i:1}"
done

Imprime cada letra en una línea.


En resumen:

  • ${“} → longitud
  • ${{str:pos:len}} → substring
  • ${{str/patrón/reemplazo}} → reemplazo
  • ${{str%patrón}} / ${{str#patrón}} → quitar prefijo/sufijo
  • ${{str^^}} / ${{str,,}} → mayúsculas/minúsculas
  • IFS + read -a → split