GNU/Linux >> Tutoriales Linux >  >> Linux

bash - encuentra la posición del índice de cadena de la subcadena

Usar expansión de parámetros:

t="MULTI: primary virtual IP for xyz/x.x.x.x:44595: 10.0.0.12"
searchstring="IP for"

rest=${t#*$searchstring}
echo $(( ${#t} - ${#rest} - ${#searchstring} ))

$rest contiene la parte de $t después $cadena de búsqueda. Por lo tanto, la posición inicial de la subcadena es la longitud de la cadena completa menos la longitud del $resto menos la longitud de la propia $cadena de búsqueda.


Aún mejor y adecuado para más casos (considere '#' versus '##' y tener más de una instancia de 'IP para') sería eliminar de la cadena coincidente hasta el final y usar la longitud de lo que queda.

text="MULTI: primary virtual IP for xyz/x.x.x.x:44595: 10.0.0.12"
search="IP for"

prefix=${text%%$search*}
echo ${#prefix}

Linux
  1. Comprobar si la cadena contiene una subcadena en Python

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

  3. bash buscar directorios

  4. Restablecer la posición de búsqueda del historial de bash

  5. ¿Cómo encontrar el índice de una palabra en una cadena en bash?

Bash concatenar cadenas

Cómo verificar si una cadena contiene una subcadena en Bash

Cómo encontrar una cadena en un archivo en Linux

Sustitución de cadena en Bash

Bash Scripting – Manipulación de cadenas

Reemplazo de una subcadena con otra cadena en Bash