Eu tenho um arquivo bibtex grande com muitas entradas em que cada entrada tem a estrutura geral
@ARTICLE{AuthorYear,
item = {...},
item = {...},
item = {...},
etc
}
(em alguns casos, ARTICLEpode ser uma palavra diferente, por exemplo BOOK)
O que eu gostaria de fazer é escrever um script simples (de preferência apenas um script shell) para extrair entradas com o AuthorYear fornecido e colocá-las em um novo arquivo .bib.
Posso imaginar que reconheço a primeira frase de uma entrada por AuthorYear e a última pelo fechamento único }e talvez use sedpara extrair a entrada, mas não sei exatamente como fazer isso exatamente. Alguém pode me dizer como eu conseguiria isso?
Provavelmente deveria ser algo como
sed -n "/AuthorYear/,/\}/p" file.bib
Mas isso é interrompido devido ao fechamento }do primeiro item da entrada, fornecendo assim esta saída:
@ARTICLE{AuthorYear,
item = {...},
Então, eu preciso reconhecer se esse }é o único caractere em uma linha e apenas 'sed' para de ler quando esse for o caso.
sednão é necessário, eu apenas pensei que seria a opção mais fácil. Eu descobri um código um pouco diferente: o sed -n "/AuthorYear/, /^ *\}/p"que parece fazer exatamente o que eu quero, incluindo o fechamento }e a correção de espaços, se houver algum.
sed -n "/AuthorYear/,/\}$/p". Observe o$símbolo. Funciona bem, exceto que não imprime o fechamento}de um bibitem. Aliás, ésednecessário o uso de ?