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.
Tabla de Contenidos
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"
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"
# SINGLE QUOTES$ GREET_USER='Hello, Thanks for visiting $SITE_NAME'
$ echo "$GREET_USER"
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"
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
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[@]"
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^
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]
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"
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
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
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
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
Utilice la siguiente sintaxis para reemplazar todas las apariciones de la palabra.
$ echo $MESSAGE//linux/LINUX
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%.*
Para hacer coincidir la primera aparición del patrón, utilice doble porcentaje símbolo
$ SITE_NAME="www.ostechnix.com"
$ echo $SITE_NAME%%.*
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#*.
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##*.
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.