expr - gerenciando strings

2

Eu preciso de um texto assim:

A234321=http://www.google..... a normal URL

E retire apenas o URL, eliminando a primeira parte. Acho que posso usar expr para fazer isso, mas não consigo descobrir o caminho certo

O regex inteiro que eu posso usar é http:[a-zA-Z0-9/_]+

    
por Marco 30.08.2011 / 15:38

3 respostas

3

Não tenho certeza se você está procurando por isso. Veja se isso ajuda.

expr 'A234321=http://www.google&x=y' : '^[^=]*=\(.*\)'
    
por 30.08.2011 / 16:07
2

Você não precisa expr para isso. Você pode usar as construções de shell ${VAR#PATTERN} , que expande para $VAR com o prefixo mais curto que corresponde ao padrão especificado retirado, ${VAR##PATTERN} que retira o prefixo mais longo e ${VAR%PATTERN} e ${VAR%%PATTERN} quais sufixos de faixa. p>

text='A234321=http://www.example.com/wibble'
protocol=${text%%://*}
url=${protocol##*[!a-z]}://${text#*://}
    
por 31.08.2011 / 01:15
0

Supondo que seu texto está sempre separado por um caractere '=', o cut fornecerá o URL:

url='echo $text | cut -f 2 -d"="'

Basicamente, aqui estamos cortando o campo de texto, delimitado por = e extraindo o segundo campo.

    
por 31.08.2011 / 01:55