Como extrair submaturas de uma string e escrevê-las em um arquivo?

0

Eu quero analisar uma string para subpastas específicas e gerar aquelas - uma subversão por linha - em um arquivo.

Essencialmente eu gostaria de extrair o valor de cada atributo href:

$ cat Fin
<a href="a.htm">A</a>X<a href="b.htm">B</a>Y<a href="c.htm">C</a>

$ echo Fin | [grep, sed, awk, ...?] > Fout

$ cat Fout
a.htm
b.htm
c.htm

Eu tentei algumas coisas com ferramentas nomeadas, mas as coisas não funcionam ou são muito complicadas. Eu gostaria de realizar essa transformação dentro de uma única linha de comando, concatenando o mínimo possível de comandos com a tubulação.

    
por Raffael 28.02.2014 / 12:21

2 respostas

4

Você pode usar o GNU grep (se construído com suporte a PCRE) para isso:

$ grep -Po '(?<=a href=")[^"]*' file
a.htm
b.htm
c.htm

É um look-behind (o que vem depois de a href=" ?) e leva tudo até as próximas aspas duplas.

    
por 28.02.2014 / 13:05
3
sed 's%</a>%\n%g' Fin | sed 's%.*"\([a-z]\.htm\).*%%' > Fout
a.htm
b.htm
c.htm

Certamente há um caminho mais curto e elegante.

    
por 28.02.2014 / 13:01

Tags