Tente isto:
sed -r 's/.*(http[^"]*)".*//g'
No Mac OSX, tente:
sed -E 's/.*(http[^"]*)".*//g'
Notas
Existem vários itens a serem observados sobre esse comando sed
:
sed 's/^.*(http.*)".*$//g'
-
O
^
é desnecessário. As expressões regulares do sed são sempre gananciosas . Isso significa que, se uma regex que comece com.*
coincide, ela sempre será igual ao início da linha. -
Para tornar
(
em um caractere de agrupamento, ele pode ter escape ou a regex estendida pode ser ativada com o sinalizador-r
(-E
on OSX). Essa sinalização geralmente reduz bastante o número de escutas que você precisará. -
Além disso, como a regex é gulosa,
(http.*)"
corresponderá à última aspa dupla na linha, não à primeira. O URL terminará, no entanto, com a primeira aspa dupla. Em vez disso, use(http[^"]*)"
e a correspondência nunca se estenderá além do primeiro"
. -
O cifrão em
.*$
também é supérfluo. Novamente, como a regex é gulosa, se uma expressão regular terminar com.*
corresponde, ela corresponderá ao final da linha.