En este artículo, discutiremos cómo escribir un script bash para extraer una substring de una string.
Extracción de una substring basada en índice
Hay varias formas de obtener una substring según el índice de caracteres de la string:
- Usando el comando de corte
- Usando la substring Bash
- Uso del comando expr substr
- Usando el comando awk
Método 1: Usando el comando de corte
El comando Cortar se usa para realizar la operación de corte para obtener el resultado deseado.
Sintaxis:
cut [option] range [string/filename]
La opción -c se usa para cortar la string por carácter. Es necesario especificar lista o rango de números de caracteres de lo contrario da error con esta opción. En rango, especifique el rango de índices del original para obtener la substring. Utiliza un sistema de índice basado en 1 (la indexación comienza desde 1) .
Ejemplo 1: para fines de demostración, extraigamos el último 0 del carácter en la string ‘01010string’.
Código:
cut -c 6-11<<< '01010string'
<<< se conoce como here-string. Usando esto, uno puede pasar una string de texto prefabricada a un programa. Hemos especificado el rango 6-11 porque 6 es el índice inicial y 11 es el índice final de nuestro resultado deseado.
Producción:
Ejemplo 2: ahora extraiga los caracteres antes de ‘s’ en la string ‘01010string’.
Código:
cut -c 1-5<<< '01010string'
Hemos especificado el rango 1-5, porque 1 es el índice inicial y 5 es el índice final de nuestro resultado deseado.
Producción:
Método 2: substring de Bash (sin usar un comando externo)
Sintaxis:
${VAR:start_index:length}
Utiliza un sistema de índice basado en 0 .
Ejemplo 1: Para demostración, extraeremos la substring de una string ‘Mi nombre es ROMY’ del índice 11 al índice 15. Para el índice 11 a 15, la longitud de la substring será 4.
Código:
STR="My name is ROMY" echo ${STR:11:4}
Producción:
Ejemplo 2: extraiga la string que se encuentra antes del índice 10. Como este método utiliza un sistema de índice basado en 0, la longitud de la string deseada será 10.
Código:
STR="My name is ROMY" echo ${STR:0:10}
Producción:
Método 3: Usando el comando expr
Se utiliza para realizar:
- operaciones de suma, resta, multiplicación, división y módulo.
- Evaluación de expresiones regulares, operaciones de string como substring.
Utiliza un sistema de índice basado en 1 .
Ejemplo 1: para demostración, extraeremos la substring de una string ‘Mi nombre es ROMY’ del índice 12 al índice 16. Para el índice 12 a 16, la longitud de la substring será 4.
Sintaxis:
expr substr <input_string> <start_index> <length>
Código:
expr substr "My name is ROMY" 12 4
Producción:
Ejemplo 2: extraiga una substring desde el inicio de una string hasta el índice 10. Como este método utiliza un sistema de índice basado en 1, la longitud de la string hasta el índice 10 es 9.
Código:
expr substr "My name is ROMY" 1 9
Producción:
Método 4: Usando el comando awk
Es un lenguaje de secuencias de comandos utilizado para manipular datos. No requiere compilación y permite funciones de string, variable, etc. Tiene una función substr() incorporada que se puede usar directamente para obtener la substring.
La función substr(s, i, n) acepta tres argumentos.
- s: la string de entrada
- i : El índice de inicio de la substring
- n : La longitud de la substring.
Utiliza un sistema de índice basado en 1 .
Sintaxis:
awk '{print substr($var,start_index, length)}'
Ejemplo 1: extraiga una substring de longitud 5 a partir del índice 12.
Código:
awk '{print substr($0, 12, 5)}' <<< 'My name is ROMY'
Producción:
Ejemplo 2: extraiga una string de longitud 10, comenzando desde el índice 1.
Código:
awk '{print substr($0, 1, 10)}' <<< 'My name is ROMY'
Producción:
Extracción de una substring basada en patrones
Hay varias formas de obtener una substring en función de los patrones de la string:
- usando el comando de corte
- usando el comando awk
Método 1: Usando el comando de corte
Como demostración, tome las strings de entrada como valores separados por comas: «Romy, Pushkar, Kareena, Katrina». La opción (-d,) se utilizará con el comando de corte para decirle al comando que la string de entrada son valores separados por comas. La opción -f le dice al comando de corte que extraiga la string en función del campo como (-f 3) es para el tercer campo de la string.
Sintaxis:
cut [option] field_position <<< "comma_seperated_string"
Código:
cut -d, -f 3 <<< “Romy,Pushkar,Kareena,Katrina”.
Esto extraerá el tercer campo.
Producción:
Método 2: usando el comando awk
Sintaxis:
awk [opción] field_separator ‘{print $field_position}’ <<< “string_de_entrada”
Código:
Para extraer el tercer campo de la string
awk -F’,’ ‘{imprimir $1}’ <<< “Romy,Pushkar,Kareena,Katrina”
Producción:
Caso de substring diferente basado en patrones
No es necesario que la string de entrada sea siempre un valor separado por comas.
En este método, veremos el método para obtener una substring que se encuentra entre dos patrones en una string. Este problema se puede resolver usando el comando awk.
- sub(/.*inicio/, “”) – Elimina todo antes de comenzar hasta ‘inicio’.
- sub(/end.*/, “”) – Elimina todo desde “end” junto con end.
Sintaxis:
awk ‘{ sub(/.*COMENZAR:/, “”); sub(/FIN:.*/, “”); imprimir }’ <<< “string_de_entrada”
Código:
STR="Hello!! My name is ROMY kumari" awk '{ sub(/.*!!/, ""); sub(/kumari.*/, ""); print }' <<< "$STR"
Producción:
Publicación traducida automáticamente
Artículo escrito por romy421kumari y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA