GNU/Linux >> Tutoriels Linux >  >> Linux

bash - trouve la position de l'index de chaîne de la sous-chaîne

Utiliser l'expansion des paramètres :

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 contient la partie de $t après $chaînederecherche. La position de départ de la sous-chaîne est donc la longueur de toute la chaîne moins la longueur de $rest moins la longueur de $searchstring elle-même.


Encore mieux et adapté à plus de cas (considérez '#' contre '##' et avoir plus d'une instance de 'IP pour') serait de supprimer de la chaîne correspondante jusqu'à la fin et d'utiliser la longueur de ce qui reste.

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. Expansion et variables des accolades Bash ?

  2. Vérifier si la chaîne contient une sous-chaîne en Python

  3. Comment trouver la longueur d'une chaîne dans Bash [Astuce rapide]

  4. Comment vérifier si la chaîne contient une sous-chaîne dans Bash

  5. bash trouver des répertoires

Chaînes de concaténation bash

Comment vérifier si une chaîne contient une sous-chaîne dans Bash

Comment trouver une chaîne dans un fichier sous Linux

Remplacement de chaîne dans Bash

Script Bash - Manipulation de chaînes

Remplacement d'une sous-chaîne par une autre chaîne dans Bash