{"id":52741,"date":"2022-07-27T06:11:48","date_gmt":"2022-07-27T06:11:48","guid":{"rendered":"https:\/\/magazineoffice.com\/como-manipular-cadenas-en-bash-en-linux\/"},"modified":"2022-07-27T06:11:50","modified_gmt":"2022-07-27T06:11:50","slug":"como-manipular-cadenas-en-bash-en-linux","status":"publish","type":"post","link":"https:\/\/magazineoffice.com\/como-manipular-cadenas-en-bash-en-linux\/","title":{"rendered":"C\u00f3mo manipular cadenas en Bash en Linux"},"content":{"rendered":"


\n<\/p>\n

\n
fatmawati achmad zaenuri\/Shutterstock.com<\/span><\/figcaption><\/figure>\n

Si hay algo con lo que Linux est\u00e1 bien equipado, son las utilidades para manipular cadenas. Pero tambi\u00e9n hay un conjunto completo de funciones integradas directamente en el shell de Bash. As\u00ed es como se usa.<\/p>\n

Manipulaci\u00f3n de cadenas<\/h2>\n

El ecosistema Linux est\u00e1 repleto de fant\u00e1sticas herramientas para trabajar con texto y cadenas. Estos incluyen awk, grep, sed y cut. Para cualquier disputa de texto pesado, estas deber\u00edan ser sus opciones de acceso.<\/p>\n

A veces, sin embargo, es conveniente usar las capacidades integradas del shell, especialmente cuando est\u00e1 escribiendo un script corto y simple. Si su secuencia de comandos se va a compartir con otras personas y se ejecutar\u00e1 en sus computadoras, el uso de la funcionalidad est\u00e1ndar de Bash significa que no tiene que preguntarse sobre la presencia o la versi\u00f3n de ninguna de las otras utilidades.<\/p>\n

Si necesita el poder de las utilidades dedicadas, util\u00edcelas por todos los medios. Para eso est\u00e1n. Pero a menudo, su script y Bash pueden hacer el trabajo por s\u00ed solos.<\/p>\n

Debido a que son elementos integrados de Bash, puede usarlos en secuencias de comandos o en la l\u00ednea de comandos. Usarlos en una ventana de terminal es una forma r\u00e1pida y conveniente de crear prototipos de sus comandos y perfeccionar la sintaxis. Evita el ciclo de edici\u00f3n, guardado, ejecuci\u00f3n y depuraci\u00f3n.<\/p>\n

Crear y trabajar con variables de cadena<\/h2>\n

Todo lo que necesitamos para declarar una variable y asignarle una cadena es nombrar la variable, usar el signo igual =<\/code>y proporcione la cadena. Si hay espacios en su cadena, envu\u00e9lvalos entre comillas simples o dobles. Aseg\u00farese de que no haya espacios en blanco a ambos lados del signo igual.<\/p>\n

my_string=\"Hello, How-To Geek World.\"<\/pre>\n
echo $my_string<\/pre>\n

\"Crear<\/p>\n

Una vez que haya creado una variable, ese nombre de variable se agrega a la lista de palabras de finalizaci\u00f3n de tabulaci\u00f3n del shell. En este ejemplo, al escribir \u00abmy_\u00bb y presionar la tecla \u00abTab\u00bb se ingresa el nombre completo en la l\u00ednea de comando.<\/p>\n

Variables de solo lectura<\/h3>\n

Hay un declare<\/code> comando que podemos usar para declarar variables. En casos simples, realmente no lo necesita, pero usarlo le permite usar algunas de las opciones del comando. Probablemente el que m\u00e1s usar\u00edas es el -r<\/code> (solo lectura) opci\u00f3n. Esto crea una variable de solo lectura que no se puede cambiar.<\/p>\n

declare -r read_only_var=\"This is an immutable string!\"<\/pre>\n

Si intentamos asignarle un nuevo valor, fallar\u00e1.<\/p>\n

read_only_var=\"A new string...\"<\/pre>\n

\"No<\/p>\n

Escribir en la ventana de terminal<\/h3>\n

Podemos escribir varias cadenas en la ventana del terminal usando echo o printf para que parezcan una sola cadena. Y no estamos limitados a nuestras propias variables de cadenas, podemos incorporar variables de entorno en nuestros comandos.<\/p>\n

user_account=\"Your user account is:\"<\/pre>\n
echo $user_account $USER<\/pre>\n

\"Escribir<\/p>\n

Cadenas de concatenaci\u00f3n<\/h3>\n

El operador m\u00e1s-igual, +=<\/code>, le permite \u00abagregar\u00bb dos cadenas juntas. Se llama concatenar.<\/p>\n

user_account=\"Your user account is:\"<\/pre>\n
user_account+=$USER<\/pre>\n
echo $user_account<\/pre>\n

\"Concatenar<\/p>\n

Tenga en cuenta que no obtiene un espacio agregado autom\u00e1ticamente entre cadenas concatenadas. Si necesita tener un espacio, debe poner uno expl\u00edcitamente al final de la primera cadena o al comienzo de la segunda.<\/p>\n

user_account=\"Your user account is: \"<\/pre>\n
user_account+=$USER<\/pre>\n
echo $user_account<\/pre>\n

\"Agregar<\/p>\n

RELACIONADO:<\/strong> C\u00f3mo establecer variables de entorno en Bash en Linux<\/em><\/strong><\/p>\n

Lectura de la entrada del usuario<\/h3>\n

Adem\u00e1s de crear variables de cadena cuyo contenido se define como parte de su declaraci\u00f3n, podemos leer la entrada del usuario en una variable de cadena.<\/p>\n

los read<\/code> El comando lee la entrada del usuario. los -p<\/code> La opci\u00f3n (mensaje) escribe un mensaje en la ventana del terminal. La entrada del usuario se almacena en la variable de cadena. En este ejemplo, la variable se llama user_file<\/code>.<\/p>\n

read -p \"Open which file? \" user_file<\/pre>\n
echo $user_file<\/pre>\n

\"Lectura<\/p>\n

Si no proporciona una variable de cadena para capturar la entrada, seguir\u00e1 funcionando. La entrada del usuario se almacenar\u00e1 en una variable llamada REPLY<\/code>.<\/p>\n

read -p \"Open which file? \"<\/pre>\n
echo $REPLY<\/pre>\n

\"Leer<\/p>\n

Por lo general, es m\u00e1s conveniente proporcionar su propia variable y darle un nombre significativo.<\/p>\n

Manipulaci\u00f3n de cadenas<\/h2>\n

Ahora que tenemos nuestras cadenas, ya sea definidas en el momento de la creaci\u00f3n, le\u00eddas de la entrada del usuario o creadas mediante la concatenaci\u00f3n de cadenas, podemos comenzar a hacer cosas con ellas.<\/p>\n

Encontrar la longitud de la cadena<\/h3>\n

Si es importante o \u00fatil saber la longitud de una cadena, podemos obtenerla precediendo el nombre de la variable con un hash \u201c#<\/code>\u00bb s\u00edmbolo.<\/p>\n

my_string=\"There are 39 characters in this string.\"<\/pre>\n
echo $#my_string<\/pre>\n

\"Obtener<\/p>\n

Podemos extraer una subcadena de una variable de cadena proporcionando un punto de inicio dentro de la cadena y una longitud opcional. Si no proporcionamos una longitud, la subcadena contendr\u00e1 todo, desde el punto de inicio hasta el \u00faltimo car\u00e1cter.<\/p>\n

El punto de inicio y la longitud siguen al nombre de la variable, con dos puntos \u201c:<\/code>\u00bb entre ellos. Tenga en cuenta que los caracteres en una variable de cadena se numeran a partir de cero<\/em>.<\/p>\n

long_string=\"Frankenstein or the Modern Prometheus\"<\/pre>\n
substring=$long_string:0:12<\/pre>\n
echo $substring<\/pre>\n
echo $long_string:27<\/pre>\n

\"Extraer<\/p>\n

Otra variaci\u00f3n le permite descartar una cantidad de letras del final de la cadena. Efectivamente, le permite establecer un punto de inicio y usar un n\u00famero negativo como longitud. La subcadena contendr\u00e1 los caracteres desde el punto de inicio hasta el final de la cadena, menos la cantidad de caracteres que especific\u00f3 en el n\u00famero negativo.<\/p>\n

my_string=\"alphabetical\"<\/pre>\n
echo $my_string:5:-4<\/pre>\n

\"Extraer<\/p>\n

En todos los casos, la variable de cadena original no se modifica. La subcadena \u00abextra\u00edda\u00bb en realidad no se elimina del contenido de la variable.<\/p>\n

La desventaja de usar compensaciones de caracteres es que necesita saber de antemano d\u00f3nde se encuentran dentro de la cadena las subcadenas que desea extraer.<\/p>\n

Si su cadena est\u00e1 delimitada por un car\u00e1cter repetido, puede extraer subcadenas sin saber d\u00f3nde est\u00e1n en la cadena ni cu\u00e1nto tiempo tienen.<\/p>\n

Para buscar desde el principio de la cadena, siga el nombre de la variable con dos signos de porcentaje, %%<\/code>el car\u00e1cter delimitador, y un asterisco, *<\/code>. Las palabras de esta cadena est\u00e1n delimitadas por espacios.<\/p>\n

long_string=\"first second third fourth fifth\"<\/pre>\n
echo $long_string%%' '*<\/pre>\n

\"Extraer<\/p>\n

Esto devuelve la primera subcadena desde el principio de la cadena que no contiene el car\u00e1cter delimitador. Esto se llama la opci\u00f3n de subcadena corta.<\/p>\n

La opci\u00f3n de subcadena larga devuelve la parte frontal de la cadena hasta la \u00faltima subcadena delimitada. En otras palabras, omite la \u00faltima subcadena delimitada. Sint\u00e1cticamente, la \u00fanica diferencia es que usa un solo signo de porcentaje \u00ab%<\/code>\u201d en el comando.<\/p>\n

long_string=\"first second third fourth fifth\"<\/pre>\n
echo $long_string%' '*<\/pre>\n

\"Extraer<\/p>\n

Como era de esperar, puede buscar de la misma manera desde el final de la cadena. En lugar de un signo de porcentaje, use un hash \u00ab#<\/code>\u201d firme, y mueva el delimitador para venir despu\u00e9s<\/em> el asterisco\u201d*<\/code>\u201d en el comando.<\/p>\n

long_string=\"this.long.string.of.words.is.delimited.by.periods\"<\/pre>\n
echo $long_string##*.<\/pre>\n

\"Extraer<\/p>\n

Esta es la opci\u00f3n de subcadena corta, recorta la primera subcadena que encuentra desde la parte posterior de la cadena que no contiene el delimitador.<\/p>\n

long_string=\"this.long.string.of.words.is.delimited.by.periods\"<\/pre>\n
echo $long_string#*.<\/pre>\n

\"Extraer<\/p>\n

La opci\u00f3n de subcadena larga devuelve la parte posterior de la cadena hasta el primer delimitador desde el frente de la cadena. En otras palabras, omite la primera subcadena delimitada.<\/p>\n

Sustituci\u00f3n de subcadena<\/h2>\n

Cambiar subcadenas por otras subcadenas es f\u00e1cil. El formato es el nombre de la cadena, la subcadena que se reemplazar\u00e1 y la subcadena que se insertar\u00e1, separados por una barra inclinada \u00ab\/<\/code>\u00bb caracteres.<\/p>\n

string=\"blue pig giggles\"<\/pre>\n
echo $string\/pig\/goat<\/pre>\n

\"Sustituir<\/p>\n

Para limitar la b\u00fasqueda al final de la cadena, preceda la cadena de b\u00fasqueda con un signo de porcentaje \u00ab%<\/code> \u00bb personaje.<\/p>\n

string=\"blue pig giggles\"<\/pre>\n
echo $string\/%giggles\/chuckles<\/pre>\n

\"Sustituir<\/p>\n

Para limitar la b\u00fasqueda al comienzo de la cadena, preceda la cadena de b\u00fasqueda con un hash \u00ab#<\/code>\u00bb personaje.<\/p>\n

string=\"blue pig giggles\"<\/pre>\n
echo $string\/#blue\/yellow<\/pre>\n

\"Sustituir<\/p>\n

Una cuerda es una cosa flexible<\/h2>\n

Si una cadena no es exactamente como le gustar\u00eda o no la necesita, estas herramientas lo ayudar\u00e1n a reformatearla para que se adapte a sus necesidades. Para transformaciones complicadas, use las utilidades dedicadas, pero para los ajustes menores use las funciones integradas de shell y evite la sobrecarga de cargar y ejecutar una herramienta externa.<\/p>\n

RELACIONADO:<\/strong> Todo lo que siempre quiso saber sobre los inodos en Linux<\/em><\/strong><\/p>\n<\/div>\n