Extraindo citações com grep e sed para um 'arquivo_de citacoes.txt' [RESOLVIDO]

1. Extraindo citações com grep e sed para um 'arquivo_de citacoes.txt' [RESOLVIDO]

José Teles Maciel
telesmaciel

(usa Ubuntu)

Enviado em 07/11/2009 - 22:28h

Olá galera, tudo bem?
Seguinte, o que vou perguntar NÃO é trabalho de facul, embora a envolva (infelizmente minha faculdade usa aquele sistema 'janelas') hehe.
Estou com meu TCC de 70 pgs bem formatado, só que ficou faltando a página final de referências, aos invés de fazer essa página eu coloquei as referências ao longo do texto, tipo:

[trecho do TCC]

Web 2.0 é uma reunião de conceitos, paradigmas, e principalmente atitudes que geram
e mantém uma web participativa e dinâmica que se contrapõe a geração anterior da web 1.0 de
conteúdo estático e expositivo (O'REILLY, What's web 2.0, 2005)

[/trecho do TCC]

Então o que eu quero fazer é usar regex mais o grep ou o sed (sou novato em tudo isso) pra criar uma página contendo tudo que aparece entre "()" no meu TCC (são minhas referências).

Já usei esse comando do sed:

sed -n '/(*)/w referencias.txt' meutcc.txt

(nesse caso o meutcc.txt é o texto corrido gerado com o pdftotext :D )

Blz, ele filtrou ocorrências de () mas me devolveu as linhas inteiras em que achou () .
Existe uma forma de ele me devolver o conteúdo dos () ?

Tipo, ele vasculha referência acima e salva no referencias.txt só a string:
(O'REILLY, What's web 2.0, 2005)

Flw, galera...
Vlw, to entrando agora pro VOL, mas espero já poder ajudar em breve.


  


2. MELHOR RESPOSTA

Marcos Paulo Ferreira
Daemonio

(usa Slackware)

Enviado em 08/11/2009 - 17:47h

Uma alternativa da regexp acima para uma versão menos greedy:

A saída sera tudo entre () podendo ter mais de um () na linha:

sed -n 's/[^(]*(\([^)]*\)[^(]*/(\1)/gp' meutcc.txt > ref.txt

[]'s

3. Re: Extraindo citações com grep e sed para um 'arquivo_de citacoes.txt' [RESOLVIDO]

Denis Doria
thuck

(usa Debian)

Enviado em 08/11/2009 - 08:48h

Bem, estou pressupondo que vc colocou um () por linha; e que nunca haverá o caso 'aaaaa (bbbb) ccccc (ddddd)'; mas somente 'aaaaa (bbbb) cccc' ou ainda só '(aaaa)'.

thuck@thuck:~/test$ cat teste.txt
aaaaaaa
bbbbbb (cccccc) ddddd
kkkk (eeeeee)
(lllll)
fffff
gggg hhhh

thuck@thuck:~/test$ cat teste.txt |sed -e '/(.*)/!d' -e 's/.*(\(.*\)).*/\1/'
cccccc
eeeeee
lllll







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts