GNU/Linux >> Tutoriales Linux >  >> Linux

Bash Beginner Series #6:Operaciones de cadenas en Bash

¡Vamos a manipular algunas cadenas!

Si está familiarizado con las variables en bash, ya sabe que no hay tipos de datos separados para cadena, int, etc. Todo es una variable.

Pero esto no significa que no tenga funciones de manipulación de cadenas.

En el capítulo anterior, aprendió operadores aritméticos en Bash. En este capítulo, aprenderá a manipular cadenas usando una variedad de operaciones con cadenas. ¡Aprenderá cómo obtener la longitud de una cadena, concatenar cadenas, extraer subcadenas, reemplazar subcadenas y mucho más!

Obtener la longitud de la cadena

Empecemos por obtener la longitud de una cadena en bash.

Una cadena no es más que una secuencia (matriz) de caracteres. Vamos a crear una cadena llamada distro e inicializa su valor a “Ubuntu ”.

distro="Ubuntu"

Ahora, para obtener la longitud de la cadena de distribución, solo tiene que agregar # antes del nombre de la variable. Puede usar la siguiente declaración de eco:

[email protected]:~/scripts$ echo ${#distro}
6

Tenga en cuenta que el comando echo es para imprimir el valor. {#string} es lo que da la longitud de la cadena.

Concatenando dos cadenas

Puede agregar una cadena al final de otra cadena; este proceso se denomina concatenación de cadenas.

Para demostrarlo, primero creemos dos cadenas str1 y str2 de la siguiente manera:

str1="hand"
str2="book"

Ahora puede unir ambas cadenas y asignar el resultado a una nueva cadena llamada str3 de la siguiente manera:

str3=$str1$str2

No puede ser más simple que esto, ¿verdad?

Encontrar subcadenas


Puede encontrar la posición (índice) de una letra o palabra específica en una cadena. Para demostrarlo, primero creemos una cadena llamada str de la siguiente manera:

str="Bash is Cool"

Ahora puede obtener la posición específica (índice) de la subcadena. Para lograr eso, use el expr comando:

[email protected]:~/scripts$ word="Cool"
[email protected]:~/scripts$ expr index "$str" "$word"
9

El resultado 9 es el índice donde comienza la palabra "Genial" en la cadena. cadena.

Estoy evitando deliberadamente el uso de declaraciones condicionales como si, de lo contrario, porque en esta serie para principiantes de bash, las declaraciones condicionales se tratarán más adelante.

Extracción de subcadenas

También puede extraer subcadenas de una cadena; es decir, puede extraer una letra, una palabra o algunas palabras de una cadena.

Para demostrarlo, primero creemos una cadena llamada foss de la siguiente manera:

foss="Fedora is a free operating system"

Ahora supongamos que desea extraer la primera palabra "Fedora" en el foss cuerda. Debe especificar la posición inicial (índice) de la subcadena deseada y la cantidad de caracteres que necesita extraer.

Por lo tanto, para extraer la subcadena “Fedora”, utilizará 0 como posición inicial y extraerá 6 caracteres de la posición inicial:

[email protected]:~/scripts$ echo ${foss:0:6}
Fedora

Tenga en cuenta que la primera posición en una cadena es cero, al igual que en el caso de las matrices en bash. También puede especificar solo la posición inicial de una subcadena y omitir la cantidad de caracteres. En este caso, se extraerá todo, desde la posición inicial hasta el final de la cadena.

Por ejemplo, para extraer la subcadena "sistema operativo gratuito" de foss cuerda; solo necesitamos especificar la posición inicial 12:

[email protected]:~/scripts$ echo ${foss:12}
free operating system

Reemplazo de subcadenas

También puede reemplazar una subcadena con otra subcadena; por ejemplo, puede reemplazar "Fedora" con "Ubuntu" en el foss cadena de la siguiente manera:

[email protected]:~/scripts$ echo ${foss/Fedora/Ubuntu}
Ubuntu is a free operating system

Hagamos otro ejemplo, reemplacemos la subcadena "gratis" con "popular":

[email protected]:~/scripts$ echo ${foss/free/popular}
Fedora is a popular operating system

Dado que solo está imprimiendo el valor con el comando echo, la cadena original no se altera realmente.

Eliminación de subcadenas

También puede eliminar subcadenas. Para demostrarlo, primero creemos una cadena llamada fact de la siguiente manera:

fact="Sun is a big star"

Ahora puede eliminar la subcadena "grande" del hecho de la cadena:

[email protected]:~/scripts$ echo ${fact/big}
Sun is a star

Vamos a crear otra cadena llamada celda:

cell="112-358-1321"

Ahora supongamos que desea eliminar todos los guiones de la celda cuerda; la siguiente instrucción solo eliminará la aparición del primer guión en la celda cadena:

[email protected]:~/scripts$ echo ${cell/-}
112358-1321

Para eliminar todos los guiones de la celda cadena, debe usar barras diagonales dobles de la siguiente manera:

[email protected]:~/scripts$ echo ${cell//-}
1123581321

Tenga en cuenta que está utilizando declaraciones de eco y, por lo tanto, la cadena de celdas está intacta y no modificada; ¡solo está mostrando el resultado deseado!

Para modificar la cadena, debe volver a asignar el resultado a la cadena de la siguiente manera:

[email protected]:~/scripts$ echo $cell
112-358-1321
[email protected]:~/scripts$ cell=${cell//-}
[email protected]:~/scripts$ echo $cell
1123581321

Convertir letras mayúsculas y minúsculas en cadena

También puede convertir una cadena en letras minúsculas o mayúsculas. Primero creemos dos cadenas llamadas leyenda y actor:

legend="john nash"
actor="JULIA ROBERTS"

Puedes convertir todas las letras de la leyenda cadena a mayúsculas:

[email protected]:~/scripts$ echo ${legend^^}
JOHN NASH

También puede convertir todas las letras en la cadena del actor a minúsculas:

[email protected]:~/scripts$ echo ${actor,,}
julia roberts

También puede convertir solo el primer carácter de la leyenda cadena a mayúsculas de la siguiente manera:

[email protected]:~/scripts$ echo ${legend^}
John nash

Asimismo, puede convertir solo el primer personaje del actor cadena a minúsculas de la siguiente manera:

[email protected]:~/scripts$ echo ${actor,}
jULIA ROBERTS

También puede cambiar ciertos caracteres en una cadena a mayúsculas o minúsculas; por ejemplo, puedes cambiar las letras j y n a mayúsculas en la leyenda cadena de la siguiente manera:

[email protected]:~/scripts$ echo ${legend^^[jn]}
JohN Nash

¡Impresionante! Esto nos lleva al final de este tutorial en la serie para principiantes de bash. Descarga el siguiente PDF y practica lo que acabas de aprender.

Bash Capítulo 6 Preguntas de práctica Problemas y su solución para practicar lo que acabas de aprender en este capítulo Bash-Chapter-6-Practice-Questions-Linux-Handbook.pdf28 KB

¡Espero que haya disfrutado manipulando cadenas en bash y consulte el siguiente capítulo, ya que aprenderá cómo agregar habilidades para la toma de decisiones a sus scripts de bash!


Linux
  1. ¿Realizando operaciones de escritura atómica en un archivo en Bash?

  2. Cómo dividir una cadena en Bash Script

  3. Bash Beginner Series #9:Uso de funciones en Bash

  4. Convierta una cadena de texto en bash en una matriz

  5. ¿Qué hace 'bash -c'?

Bash Beginner Series #1:Cree y ejecute su primer script de Bash Shell

Bash Beginner Series #5:Uso de operadores aritméticos en Bash Scripting

Bash Beginner Series #4:Uso de arreglos en Bash

Bash Beginner Series #3:Pasando Argumentos a Bash Scripts

Bash Beginner Series #7:Toma de decisiones con sentencias If Else y Case

Bash Beginner Series #10:Automatización con Bash