GNU/Linux >> Tutoriales Linux >  >> Linux

Ejemplos de manipulación de cadenas Bash:longitud, subcadena, buscar y reemplazar

En bash shell, cuando usa un signo de dólar seguido de un nombre de variable, shell expande la variable con su valor. Esta función de shell se denomina expansión de parámetros.

Pero la expansión de parámetros tiene muchas otras formas que le permiten expandir un parámetro y modificar el valor o sustituir otros valores en el proceso de expansión. En este artículo, revisemos cómo usar el concepto de expansión de parámetros para operaciones de manipulación de cadenas.

Este artículo es parte de la serie de tutoriales bash en curso. Consulte nuestro artículo anterior sobre la expansión bash { }.

1. Identificar la longitud de la cadena dentro de Bash Shell Script

${#string}

El formato anterior se usa para obtener la longitud de la variable bash dada.

$ cat len.sh
#! /bin/bash

var="Welcome to the geekstuff"

echo ${#var}

$ ./len.sh
24

Para comprender más acerca de las variables bash, lea 6 ejemplos prácticos de variables locales y globales de bash.

2. Extraiga una subcadena de una variable dentro de Bash Shell Script

Bash proporciona una forma de extraer una subcadena de una cadena. El siguiente ejemplo explica cómo analizar n caracteres a partir de una posición particular.

${string:position}

Extraer subcadena de $cadena en $posición

${string:position:length}

Extrae $longitud de la subcadena de caracteres de $cadena a partir de $posición. En el siguiente ejemplo, la primera declaración de eco devuelve la subcadena a partir de la posición 15. La segunda declaración de eco devuelve los 4 caracteres a partir de la posición 15. La longitud debe ser el número mayor o igual a cero.

$ cat substr.sh
#! /bin/bash

var="Welcome to the geekstuff"

echo ${var:15}
echo ${var:15:4}

$ ./substr.sh
geekstuff
geek

Además, consulte nuestro artículo anterior para obtener más información sobre los parámetros especiales $*, $@, $#, $$, $!, $?, $-, $_ bash.

3. Coincidencia de subcadena más corta

La siguiente sintaxis elimina la coincidencia más corta de $subcadena desde el frente de $cadena

${string#substring}

La siguiente sintaxis elimina la coincidencia más corta de $subcadena de la parte posterior de $cadena

${string%substring}

El siguiente script de shell de muestra explica los dos conceptos de coincidencia de subcadena más cortos anteriores.

$ cat shortest.sh
#! /bin/bash

filename="bash.string.txt"

echo ${filename#*.}
echo ${filename%.*}

$ ./shortest.sh
After deletion of shortest match from front: string.txt
After deletion of shortest match from back: bash.string

En la primera declaración de eco, la subcadena '*.' coincide con los caracteres y un punto, y # se elimina del frente de la cadena, por lo que elimina la subcadena "bash". de la variable llamada nombre de archivo. En la segunda declaración de eco, la subcadena '.*' coincide con la subcadena que comienza con un punto, y % se elimina de la parte posterior de la cadena, por lo que elimina la subcadena '.txt'

4. Coincidencia de subcadena más larga

La siguiente sintaxis elimina la coincidencia más larga de $subcadena del frente de $cadena

${string##substring}

La siguiente sintaxis elimina la coincidencia más larga de $subcadena de la parte posterior de $cadena

${string%%substring}

El siguiente script de shell de muestra explica los dos conceptos de coincidencia de subcadena más largos anteriores.

$ cat longest.sh
#! /bin/bash

filename="bash.string.txt"

echo "After deletion of longest match from front:" ${filename##*.}
echo "After deletion of longest match from back:" ${filename%%.*}

$ ./longest.sh
After deletion of longest match from front: txt
After deletion of longest match from back: bash

En el ejemplo anterior, ##*. elimina la coincidencia más larga para '*.' que coincide con "bash.string". entonces, después de dividir esto, imprime el txt restante. Y %%.* quita la coincidencia más larga para .* desde atrás, que coincide con ".string.txt", después de la separación, devuelve "bash".

5. Buscar y reemplazar valores de cadena dentro de Bash Shell Script

Reemplazar solo la primera coincidencia

${string/pattern/replacement}

Coincide con el patrón en la variable $cadena y reemplaza solo la primera coincidencia del patrón con el reemplazo.

$ cat firstmatch.sh
#! /bin/bash

filename="bash.string.txt"

echo "After Replacement:" ${filename/str*./operations.}

$ ./firstmatch.sh
After Replacement: bash.operations.txt

Reemplazar todas las coincidencias

${string//pattern/replacement}

Reemplaza todas las coincidencias de patrón con reemplazo.

$ cat allmatch.sh
#! /bin/bash

filename="Path of the bash is /bin/bash"

echo "After Replacement:" ${filename//bash/sh}

$ ./allmatch.sh
After Replacement: Path of the sh is /bin/sh

Para buscar y reemplazar, consulte nuestros artículos anteriores:ejemplos de sustitución de sed y búsqueda y reemplazo de Vim.

Reemplazar principio y final

${string/#pattern/replacement}

La siguiente sintaxis se reemplaza con la cadena de reemplazo, solo cuando el patrón coincide con el principio de $cadena.

${string/%pattern/replacement}

La siguiente sintaxis reemplaza con la cadena de reemplazo, solo cuando el patrón coincide al final de la $cadena dada.

$ cat posmatch.sh
#! /bin/bash

filename="/root/admin/monitoring/process.sh"

echo "Replaced at the beginning:" ${filename/#\/root/\/tmp}
echo "Replaced at the end": ${filename/%.*/.ksh}

$ ./posmatch.sh
Replaced at the beginning: /tmp/admin/monitoring/process.sh
Replaced at the end: /root/admin/monitoring/process.ksh

Lecturas recomendadas

Bash 101 Hacks, por Ramesh Natarajan . Paso la mayor parte de mi tiempo en el entorno Linux. Entonces, naturalmente, soy un gran admirador de la línea de comandos de Bash y las secuencias de comandos de Shell. Hace 15 años, cuando estaba trabajando en diferentes versiones de *nix, solía escribir mucho código en C shell y Korn shell. Años más tarde, cuando comencé a trabajar en Linux como administrador del sistema, prácticamente automaticé todas las tareas posibles utilizando scripts de shell Bash. Basado en mi experiencia con Bash, he escrito el libro electrónico Bash 101 Hacks que contiene 101 ejemplos prácticos tanto en la línea de comandos de Bash como en las secuencias de comandos de shell. Si ha estado pensando en dominar Bash, hágase un favor y lea este libro, que lo ayudará a tomar el control de su línea de comandos y secuencias de comandos de shell de Bash.


Linux
  1. Bash For Loop Guía y ejemplos

  2. ¿Usando 'sed' para buscar y reemplazar?

  3. Cómo encontrar la longitud de la cadena en Bash [Consejo rápido]

  4. Cómo comprobar si la cadena contiene una subcadena en Bash

  5. encuentra el texto coincidente y reemplaza la siguiente línea

Bash Scripting – Manipulación de cadenas

Cómo usar el comando SED para buscar y reemplazar cadenas en archivos

Cómo buscar y reemplazar texto, palabra o cadena en un archivo

50 ejemplos simples y útiles del comando Buscar en Linux

Reemplazo de una subcadena con otra cadena en Bash

Cómo usar Sed para buscar y reemplazar una cadena en un archivo