bash - localiza a posição do índice de string da substring

1

bom dia tudo

Eu não consigo ver meu erro, gostaria de encontrar a posição de uma "string de pesquisa" de substring dentro da string "t"

de alguns métodos que eu olhei, isso parece mais fácil e mais compreensível, no entanto, isso apenas trava (ambos)

awk 'match($t, "$searchstring")'

awk '{print match($t, "$searchstring")}' 

post original - post # 3

  • t="MULTI: IP virtual primário para xyz / x.x.x.x: 44595: 10.0.0.12"

  • searchstring="IP para"

alguma sugestão?

    
por Cybex 17.11.2015 / 22:05

2 respostas

3

Use a expansão 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 contém a parte de $ t após $ searchstring. A posição inicial da substring é, portanto, o comprimento da string inteira menos o comprimento do $ rest menos o comprimento da própria $ searchstring.

    
por 17.11.2015 / 22:19
1

Ainda melhor e adequado para mais casos (considerar '#' versus '##' e ter mais de uma instância de 'IP for') seria remover da string correspondente até o final e usar o comprimento do que resta .

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

prefix=${text%%$search*}
echo ${#prefix}
    
por 30.04.2018 / 00:54

Tags