bash - manipulação de strings get string antes ou depois da substring

5

bom dia tudo

essa é uma pergunta no noob, mas não consigo encontrar a resposta para isso em lugar algum. Outras funções como 'cut' ou 'awk' ou 'sed' são sempre mencionadas, mas nunca usam a função de expressão de string (eu acho que é chamada)

string="hi this is a string.and.it has no purpose other than being here"

searchstring="and"

temp=${string#*$searchstring} # this means everything after "and" will be inserted into temp

echo $temp = "hi this is a string."

mas digo que quero tudo antes de "e" e usando o mesmo método que usei para obter o resultado da variável temp, assim eu quero

echo $temp = ".it has no purpose other than being here"

Eu tentei

temp=${string%*$searchstring} (as I understand, # is from front and % is back)

mas isso retorna apenas o conteúdo da string inalterado

Além disso, man pages, o que é chamado, essa função de expressão de string, onde posso encontrar informações mais detalhadas?

    
por Cybex 26.11.2015 / 14:09

1 resposta

9

Você precisa colocar o asterisco na outra extremidade da string. O asterisco fica para "o que for", então

${string%$searchstring*}

significa "remove from string everyting da cadeia de pesquisa em diante".

Isso está documentado em man bash em "Expansão de Parâmetros".

    
por 26.11.2015 / 14:18

Tags