GNU/Linux >> Znalost Linux >  >> Linux

bash - vyhledá pozici indexu řetězce podřetězce

Použijte rozšíření parametrů:

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 obsahuje část $t po $searchstring. Počáteční pozice podřetězce je tedy délka celého řetězce mínus délka $rest mínus délka samotného $searchstring.


Ještě lepší a vhodné pro více případů (uvažte '#' versus '##' a mít více než jednu instanci 'IP pro') by bylo odstranit z odpovídajícího řetězce až do konce a použít délku toho, co zbývá.

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. Expanze závorky Bash a proměnné?

  2. Zkontrolujte, zda řetězec obsahuje podřetězec v Pythonu

  3. Jak najít délku struny v Bash [Rychlý tip]

  1. Jak zkontrolovat, zda řetězec obsahuje podřetězec v Bash

  2. Příklady manipulace s bashovým řetězcem – délka, podřetězec, najít a nahradit

  3. pomocí náhodného vygenerování náhodného řetězce v bash

  1. bash najít adresáře

  2. Převeďte textový řetězec v bash na pole

  3. Co dělá 'bash -c'?