Extraindo caracteres após um texto específico

2

Estou extraindo uma página do site usando o comando cURL.

curl "www.google.com" -s |  w3m -dump -T text/html > foo.txt

O comando w3m gera a página HTML em um formato muito mais simples, de modo que a manipulação de string no foo.txt é mais simples agora.

Agora, tenho alguns valores no meu foo.txt que são extraídos conforme abaixo.

Assistant director at Hollywood studios
Student at University of Texas at Arlington

Agora, preciso extrair apenas os valores depois de at para armazenar no meu banco de dados. Como eu posso fazer isso? Por exemplo, para a entrada acima, preciso dos valores como

Hollywood Studios
University of Texas at Arlington
    
por Ramesh 10.02.2014 / 23:53

3 respostas

2

Outra opção é enviar seu texto para grep e cut:

grep -o ' at .*$' foo.txt | cut -c5-

Isto irá extrair a string mais longa para cada linha que começa com 'at'. O corte então cortará a entrelinha 'at'.

    
por 11.02.2014 / 00:07
3

Outra forma seria substituir a primeira ocorrência de at por uma guia, então agora você tem um arquivo delimitado por tabulações e pode usar awk corretamente:

$ sed 's/ at /\t/' foo.txt | awk -F'\t' '{print $1" :: "$2}'
Assistant director :: Hollywood studios
Student :: University of Texas at Arlington

Ou a mesma coisa em Perl:

$ perl -ne '/(.+?) at (.+)/; print "$1 :: $2\n"' foo.txt

ou até mesmo

$ perl -F'\sat\s' -lane 'print "$F[0] :: @F[1..$#F]"' foo.txt
    
por 11.02.2014 / 00:51
2

Você pode usar at como separador de coluna em awk . O seguinte deve funcionar:

awk -F'at' '{print $2}' foo.txt
    
por 11.02.2014 / 00:01