Você pode usar awk
.
awk -F\" '{print $2}' filename
produziria o resultado desejado.
Usando sed
:
sed 's/[^"]*"\([^"]*\).*//' filename
Usando grep
:
grep -oP '[^"]*"\K[^"]*' filename
Eu tenho um arquivo que é como abaixo.
<a href="http://firstlink.com" title="title1">
<a href="http://secondlink.com" title="title2">
<a href="http://thirdlink.com" title="title3">
<a href="http://fourthlink.com" title="title4">
Estou tentando extrair apenas os URLs do arquivo acima. Eu estou usando o comando abaixo.
grep -o '\".*\"' new.txt
No entanto, o comando acima me fornece a saída como
"http://firstlink.com" title="title1">
"http://secondlink.com" title="title2">
"http://thirdlink.com" title="title3">
"http://foruthlink.com" title="title4">
Estou tentando extrair apenas as URLs sem o ""
. Então, minha saída esperada é
http://firstlink.com
http://secondlink.com
http://thirdlink.com
http://fourthlink.com
Como devo alterar o comando grep? Ou é possível fazê-lo no comando perl, awk ou sed?
regexp, editores de fluxo e intérpretes são exagerados aqui.
Use o bom corte :
cut -d \" -f 2 < filename
sed 's/.*"\(http.*\)" .*//' filename
Isto é mais portátil, já que algumas das outras respostas dependem de href ser o primeiro elemento
grep -o href.*\" file.txt | cut -d \" -f 2