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'.
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
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
Você pode usar at
como separador de coluna em awk
. O seguinte deve funcionar:
awk -F'at' '{print $2}' foo.txt
Tags scripting shell-script