Tutoriales

Manipulación de cadenas bash – OSTechNix

La manipulación de cadenas es uno de los conceptos básicos en bash scripting. En programación, las cadenas son tipos de datos que son una secuencia ordenada de caracteres. Es importante que sepa cómo crear y editar cadenas en bash. En este manual aprenderemos sobre la manipulación de cadenas en scripts de shell bash con ejemplos simples. Estará familiarizado con las cadenas de bash al final de este artículo.

Asignación variable

Las cadenas pueden asignarse a una variable y usarse más adelante en el script para su posterior procesamiento. Por ejemplo, creo una variable llamada "GREET_USER" e imprimiendo la cadena al terminal.

$ GREET_USER="Hello, Thanks for visiting OSTechnix"
$ echo "$GREET_USER"
Asignar la cadena a la variable

Bash no tiene un sistema de tipos fuerte. Cuando asigna un valor a una variable, se trata como un tipo de cadena. Puede crear cadenas con comillas simples, dobles o sin comillas.

Hay una diferencia entre comillas simples y dobles en bash. Las comillas simples evitan que las variables y los comandos se expandan, mientras que las comillas dobles lo admiten. Eche un vistazo al siguiente ejemplo.

Tengo otra variable llamada. creado "SITE_NAME" y se usa en el "GREET_USER" Variable. La variable se expande entre comillas dobles y la variable no se expande entre comillas simples.

$ SITE_NAME="OSTechnix"
## DOUBLE QUOTES

$ GREET_USER="Hello, Thanks for visiting $SITE_NAME"
$ echo "$GREET_USER"
Uso de comillas dobles
Uso de comillas dobles
# SINGLE QUOTES

$ GREET_USER='Hello, Thanks for visiting $SITE_NAME'
$ echo "$GREET_USER"

Uso de comillas simples
Uso de comillas simples

Longitud de la cuerda

Para averiguar la longitud de la cuerda, puede usar el # Símbolo. Encontrar la longitud de la cadena es útil en algunos casos en los que necesita escribir lógica en función del número de cadenas.

$ echo "$#SITE_NAME"
Longitud de la cuerda
Longitud de la cuerda

Conversión de cadenas en matrices

Hay muchas formas de convertir el tipo de datos de cadena en el tipo de matriz. La forma más sencilla sería encerrar la cuerda entre llaves.

$ ARR_TYPE=($GREET_USER)
$ echo $ARR_TYPE[@]
$ for element in $ARR_TYPE[@]; do
  echo $element
done
Cadena a matriz
Cadena a matriz

El segundo método es dividir la cadena y almacenarla como una matriz basada en el separador utilizado en la cadena. El ejemplo anterior usa el espacio como separador de campo (IFS), que es el IFS estándar en bash. Por ejemplo, si tiene una cadena separada por comas, puede establecer el IFS en una coma y crear una matriz. Para obtener más información sobre IFS, consulte la guía a continuación:

$ STR_TO_ARR="column1,column2,column3"
$ IFS=","
$ ARR=($STR_TO_ARR)
$ for element in $ARR[@]; do echo $element; done
$ echo "$ARR[@]"
IFS personalizado: conversión de matriz
IFS personalizado: conversión de matriz

Transformación de caso

Bash tiene soporte incorporado para conversión sensible a mayúsculas y minúsculas. Debe utilizar algunos caracteres especiales al final de la cadena que distingue entre mayúsculas y minúsculas, como se muestra a continuación.

# SPECIAL CHARACTERS

,, ==> Converts an entire string to lowercase
^^ ==> Converts an entire string to Uppercase
~~ ==> Transpose Case
,  ==> Converts first letter alone to lowercase
^  ==> Converts first letter alone to uppercase
# ---- LOWER TO UPPER CASE ----
$ L_TO_U="welcome to ostechnix"
$ echo $L_TO_U^^


# ---- UPPER TO LOWER CASE ----
$ U_TO_L="WELCOME TO OSTECHNIX"
$ echo $L_TO_U,,


# ---- TRANSPOSE CASE ----
$ TRS_CASE="Welcome To OsTechnix"
$ echo $TRS_CASE~~


# ---- FIRST LETTER TO LOWERCASE ----
$ F_TO_L="OSTECHNIX"
$ echo $F_TO_L,


# ---- FIRST LETTER TO UPPERCASE ----
$ F_TO_U="ostechnix"
$ echo $F_TO_U^
Transformación de caso
Transformación de caso

También puede utilizar la coincidencia de patrones de expresiones regulares y distingue entre mayúsculas y minúsculas para las coincidencias.

$ L_TO_U="welcome to ostechnix"
$ echo $L_TO_U^^[toe]
Coincidencia de patrones de expresiones regulares: conversión que distingue entre mayúsculas y minúsculas
Coincidencia de patrones de expresiones regulares: conversión que distingue entre mayúsculas y minúsculas

Concatenación de cadenas

Puede concatenar varias cadenas colocando las cadenas una tras otra. Dependiendo de cómo se concatenan las cadenas, también puede agregar caracteres adicionales.

$ SITE_NAME="OSTechnix"
$ MESSAGE="Welcome to"
$ echo "$MESSAGE SITE_NAME"
Concatenación de cadenas
Concatenación de cadenas

Corte de hilo

El corte de cadenas es una forma de extraer parte de una cadena en función de su posición de índice. A cada carácter de la cadena se le asigna un número entero que se puede utilizar para capturar parte de la cadena. El valor del índice varía de 0 a N. A continuación se muestra la sintaxis para el corte.

STRING:START:LENGTH

START => Starting Index Position
LENGTH => Length of the String from position START

si LENGTH no se especifica, la cadena se imprime hasta el final desde la posición del índice START.

$ SITE_NAME="OSTechnix"
$ echo $SITE_NAME:2
Cortar: de principio a fin
Cortar: de principio a fin

Si se especifica LENGTH, la subcadena se imprime desde la posición del índice START y cuántos caracteres se van a imprimir.

$ echo $SITE_NAME:2:2
Corte: inicio y longitud
Corte: inicio y longitud

También puede invertir la cuerda de muchas formas. La forma más sencilla de hacer esto es usar el comando rev. Si desea hacer esto sin ningún comando externo, tendrá que escribir la lógica manualmente.

$ echo $SITE_NAME | rev
Cuerda inversa
Cuerda inversa

Buscar y reemplazar

Existe una forma nativa de buscar y reemplazar caracteres en una cadena sin usar comandos externos como sed o awk.

Utilice la siguiente sintaxis para reemplazar la primera aparición de subcadena.

STRING/X/Y
The first occurrence of X will be replaced by Y.

Eche un vistazo al siguiente ejemplo donde la primera aparición de la palabra "linux" es reemplazado por LINUX en letras mayúsculas.

$ MESSAGE="linux is awesome to work with.
Ubuntu is one of the powerful linux distribution"
$ echo $MESSAGE
$ echo $MESSAGE/linux/LINUX
Reemplazar la primera aparición
Reemplazar la primera aparición

Utilice la siguiente sintaxis para reemplazar todas las apariciones de la palabra.

$ echo $MESSAGE//linux/LINUX
Reemplazar todas las ocurrencias
Reemplazar todas las ocurrencias

Eliminar cadena parcial

Hay varias formas de eliminar una subcadena de la cadena. Utilidades externas como sed, awk, o tr se puede usar, o hay una manera de hacerlo bash de forma nativa.

Nativa de bash, la extensión del parámetro se usa para eliminar la subcadena. Tienes que usar eso % Icono seguido de un patrón que se eliminará. Esto coincidirá y eliminará el patrón encontrado más recientemente.

Por ejemplo, quiero eliminar las palabras que vienen después del punto (.) se debe utilizar la siguiente sintaxis. Aquí lo que venga después del período (.) es removido. En este caso, el último patrón coincidente .con es removido.

$ SITE_NAME="www.ostechnix.com"
$ echo $SITE_NAME%.*
Eliminar cadena parcial con el símbolo%
Eliminar cadena parcial con el símbolo%

Para hacer coincidir la primera aparición del patrón, utilice doble porcentaje símbolo

$ SITE_NAME="www.ostechnix.com"
$ echo $SITE_NAME%%.*
Eliminar cadena parcial con el símbolo %%
Eliminar cadena parcial con el símbolo %%

También puede utilizar el # o ## Símbolo que provoca una especie de borrado inverso. Con un solo # Icono, se hace coincidir el primer patrón y se elimina todo lo anterior al patrón.

$ SITE_NAME="www.ostechnix.com"
$ echo $SITE_NAME#*.
Elimina la subcadena con el símbolo #
Elimina la subcadena con el símbolo #

Con el doble ## Icono, se hace coincidir el último patrón y se elimina todo lo anterior al patrón.

$ SITE_NAME="www.ostechnix.com"
$ echo $SITE_NAME##*.
Eliminar cadena parcial con el símbolo ##
Eliminar cadena parcial con el símbolo ##

diploma

En este artículo vimos cómo crear cadenas en bash y cómo manipularlas. Para familiarizarse con la manipulación de cadenas de bash, inicie la terminal y practique los ejemplos de esta guía. Si tiene algún comentario o pregunta, utilice la sección de comentarios a continuación.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba