Lista de todas las manipulaciones de cadenas en Bash en Linux

Lista de todas las manipulaciones de cadenas en Bash en Linux

Si hay algo con lo que Linux está bien equipado, son las utilidades de manipulación de cadenas. Pero hay una gran cantidad de funciones integradas directamente en el shell de Bash. Así es como se usa.

manipulación de cadenas

El ecosistema Linux contiene herramientas fantásticas para trabajar con texto y cadenas. Estos incluyen awk, grep, sed y cut. Para cualquier disputa de texto pesado, esta debería ser su elección.

Sin embargo, a veces es conveniente usar las funciones integradas del shell, especialmente cuando está escribiendo un script breve y simple. Si su secuencia de comandos se compartirá con otras personas y se ejecutará en sus computadoras, el uso de la funcionalidad estándar de Bash significa que no tiene que preocuparse por la disponibilidad o la versión de ninguna otra utilidad.

Si necesita el poder de utilidades especializadas, asegúrese de usarlas. Para eso están. Pero a menudo su script y Bash pueden hacer su trabajo por sí solos.

Debido a que están integrados en Bash, puede usarlos en scripts o en la línea de comandos. Usarlos en una ventana de terminal es una forma rápida y fácil de crear prototipos de comandos y mejorar la sintaxis. Esto evita el ciclo de editar, guardar, ejecutar y depurar.

Crear y trabajar con variables de cadena

Para declarar una variable y asignarle una cadena, todo lo que necesitamos hacer es nombrar la variable, usar un signo igual =y proporcionar una cadena. Si la cadena contiene espacios, escríbala entre comillas simples o dobles. Asegúrate de que no haya espacios a ambos lados del signo igual.

my_string="Hello, How-To Geek World."echo $my_string

Después de crear una variable, el nombre de esa variable se agrega a la lista de palabras de finalización de tabulación del shell. En este ejemplo, al escribir «my_» y presionar la tecla «Tab» en la línea de comando, se ingresa el nombre completo.

Variables de solo lectura

Hay declareun comando que podemos usar para declarar variables. En casos simples, no lo necesita, pero usarlo le permite usar algunas opciones de comando. -rProbablemente usará la opción (solo lectura) con más frecuencia . Esto crea una variable de solo lectura que no se puede cambiar.

declare -r read_only_var="This is an immutable string!"

Si intentamos asignarle un nuevo valor, fallará.

read_only_var="A new string..."

Escribiendo en la ventana de terminal

Podemos escribir varias líneas en la ventana del terminal usando echo o printf para que parezcan una sola línea. Y no estamos limitados a nuestras propias variables de cadena, podemos incluir variables de entorno en nuestros comandos.

user_account="Your user account is:"echo $user_account $USER

Concatenación de cadenas

El operador más-igual  +=le permite «sumar» dos cadenas juntas. Esto se llama unión.

user_account="Your user account is:"user_account+=$USERecho $user_account

Tenga en cuenta que un espacio no se agrega automáticamente entre cadenas concatenadas. Si necesita un espacio, debe colocarlo explícitamente al final de la primera línea o al comienzo de la segunda.

user_account="Your user account is: "user_account+=$USERecho $user_account

Lectura de la entrada del usuario

Además de crear variables de cadena cuyo contenido se define como parte de su declaración, podemos leer la entrada del usuario en una variable de cadena.

El comando readlee la entrada del usuario. La -popción (mensaje) escribe un mensaje en la ventana del terminal. La entrada del usuario se almacena en una variable de cadena. En este ejemplo, la variable se llama user_file.

read -p "Open which file? "user_fileecho $user_file

Si no proporciona una variable de cadena para capturar la entrada, seguirá funcionando. La entrada del usuario se almacenará en una variable llamada REPLY.

read -p "Open which file? "echo $REPLY

Por lo general, es más conveniente proporcionar su propia variable y darle un nombre significativo.

Manipulación de cadenas

Ahora que tenemos cadenas definidas en el momento de la creación, leídas de la entrada del usuario o creadas concatenando cadenas, podemos comenzar a hacer cosas con ellas.

Encontrar la longitud de una cadena

Si es importante o útil conocer la longitud de la cadena, podemos obtenerla anteponiendo el nombre de la variable con #un signo de libra «».

my_string="There are 39 characters in this string."echo ${#my_string}

Extracción de subcadenas por desplazamientos de caracteres

Podemos extraer una subcadena de una variable de cadena proporcionando un punto de inicio en la cadena y una longitud opcional. Si no especificamos una longitud, la subcadena contendrá todo, desde el punto de inicio hasta el último carácter.

El punto de inicio y la longitud siguen al nombre de la variable con dos puntos » :» entre ellos. Tenga en cuenta que los caracteres de una variable de cadena se numeran a partir de cero.

long_string="Frankenstein or the Modern Prometheus"substring=${long_string:0:12}echo $substringecho ${long_string:27}

Otra opción le permite omitir un número de letras al final de una cadena. Esencialmente, esto le permite establecer un punto de partida y usar un número negativo como longitud. La subcadena contendrá los caracteres desde el punto de inicio hasta el final de la cadena, menos la cantidad de caracteres que especifique en un número negativo.

my_string="alphabetical"echo ${my_string:5:-4}

En todos los casos, la variable de cadena original se deja intacta. La subcadena «extraída» en realidad no se elimina del contenido de la variable.

Extraer subcadenas por delimitador

La desventaja de usar compensaciones de caracteres es que necesita saber de antemano en qué parte de la cadena se encuentran las subcadenas que desea extraer.

Si su cadena está separada por un carácter repetido, puede extraer subcadenas sin saber dónde están en la cadena y cuánto tiempo tienen.

Para buscar desde el principio de una cadena, el nombre de la variable va seguido de un signo de porcentaje doble  %%, un carácter delimitador y un asterisco, *. Las palabras en esta línea están separadas por espacios.

long_string="first second third fourth fifth"echo ${long_string%%' '*}

Esto devuelve la primera subcadena desde el principio de la cadena que no contiene un carácter delimitador. Esto se llama la opción de subcadena corta.

El parámetro de subcadena larga devuelve el comienzo de la cadena hasta la última subcadena separada. En otras palabras, omite la última subcadena delimitada. Sintácticamente, la única diferencia es que el comando usa un solo signo de porcentaje » %«.

long_string="first second third fourth fifth"echo ${long_string%' '*}

Como era de esperar, puede buscar de la misma manera desde el final de la cadena. En lugar del signo de porcentaje, use el signo de almohadilla » #» y mueva el delimitador después del asterisco » *» en el comando.

long_string="this.long.string.of.words.is.delimited.by.periods"echo ${long_string##*.}

Este es un parámetro de subcadena corto y cortará la primera subcadena que se encuentra al final de una cadena que no contiene un delimitador.

long_string="this.long.string.of.words.is.delimited.by.periods"echo ${long_string#*.}

La opción de subcadena larga devuelve la parte posterior de la cadena hasta el primer delimitador desde el principio de la cadena. En otras palabras, omite la primera subcadena delimitada.

Reemplazo de subcadena

Reemplazar subcadenas con otras subcadenas es muy fácil. El formato es el nombre de la cadena, la subcadena que se reemplazará y la subcadena que se insertará, separados por barras diagonales » /«.

string="blue pig giggles"echo ${string/pig/goat}

Para limitar la búsqueda al final de la cadena, preceda la cadena de búsqueda con un signo de porcentaje » % «.

string="blue pig giggles"echo ${string/%giggles/chuckles}

Para limitar la búsqueda al comienzo de una cadena, preceda la cadena de búsqueda con un #signo de almohadilla «».

string="blue pig giggles"echo ${string/#blue/yellow}

La cuerda es flexible

Si una cadena no es exactamente lo que desea o necesita, estas herramientas lo ayudarán a reformatearla para que se ajuste a sus necesidades. Para conversiones complejas, use utilidades dedicadas y para ajustes menores, use las herramientas integradas del shell y evite la sobrecarga de descargar y ejecutar una herramienta externa.

Deja una respuesta

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