Extraia tudo entre aspas

1

Estou tentando usar o grep ou o sed para extrair uma URL de uma string parecida com javascript:open_window("http://www.example.com/somescript.ext?withquerystring=true");

O link javascript é gerado - por um aplicativo externo sobre o qual não tenho mais controle -, portanto, preciso extrair o URL para usá-lo. Eu tentei e não consegui usar uma série de combinações de grep e sed, que não funcionaram.

    
por Michael Riordan 13.01.2018 / 18:43

6 respostas

2

Usando sed :

sed -E 's/.*\("(.*)"\).*//'

Exemplo:

echo 'javascript:open_window("http://www.example.com/somescript.ext?withquerystring=true")' | sed -E 's/.*\("(.*)"\).*//'
http://www.example.com/somescript.ext?withquerystring=true
    
por 13.01.2018 / 18:57
6

Simplesmente com o GNU grep :

s='javascript:open_window("http://www.example.com/somescript.ext?withquerystring=true");'
grep -Eo 'http:[^"]+' <<<"$s"
http://www.example.com/somescript.ext?withquerystring=true
    
por 13.01.2018 / 18:49
1
awk 'BEGIN {FS = ""} {print $2}' <<'eof'
javascript:open_window("http://www.example.com/somescript.ext?withquerystring=true");
eof
    
por 13.01.2018 / 22:45
0

Você poderia cut da saída, especificando '"' (aspas duplas) como delimitador.

$ invar='javascript:open_window("http://www.example.com/somescript.ext?withquerystring=true");'
$ echo $invar | cut -d '"' -f2
http://www.example.com/somescript.ext?withquerystring=true
    
por 13.01.2018 / 18:55
0

Eu consegui o mesmo usando o comando abaixo do sed

comando

echo 'javascript:open_window("http://www.example.com/somescript.ext?withquerystring=true");'|  sed "s/.*(//g" l.txt  | sed 's/"//g' | sed "s/).*//g"

saída

http://www.example.com/somescript.ext?withquerystring=true
    
por 13.01.2018 / 21:00
0
e='javascript:open_window("http://www.example.com/somescript.ext?withquerystring=true");'

O comando sed ajudará:

sed -E 's/.*(http.*)\);//' <<< "$e"
echo 'javascript:open_window("http://www.example.com/somescript.ext?withquerystring=true");' | sed -E 's/.*"(http.*)"\);//'

Resultado:

http://www.example.com/somescript.ext?withquerystring=true
    
por 13.01.2018 / 19:02