Tengo un archivo bibtex grande con muchas entradas donde cada entrada tiene la estructura general
@ARTICLE{AuthorYear,
item = {...},
item = {...},
item = {...},
etc
}
(en algunos casos ARTICLEpodría ser una palabra diferente, por ejemplo BOOK)
Lo que me gustaría hacer es escribir un script simple (preferiblemente solo un script de shell) para extraer entradas con AuthorYear dado y ponerlas en un nuevo archivo .bib.
Me imagino que puedo reconocer la primera oración de una entrada por AuthorYear y la última por el cierre único }y tal vez usar sedpara extraer la entrada, pero realmente no sé cómo hacer esto exactamente. ¿Alguien puede decirme cómo lograría esto?
Probablemente debería ser algo como
sed -n "/AuthorYear/,/\}/p" file.bib
Pero eso se detiene debido al cierre }en el primer elemento de la entrada, dando así esta salida:
@ARTICLE{AuthorYear,
item = {...},
Por lo tanto, necesito reconocer si }es el único carácter en una línea y solo he dejado de leer cuando este es el caso.
sedno es necesario en absoluto, solo pensé que sería la opción más fácil. He descubierto un código ligeramente diferente: sed -n "/AuthorYear/, /^ *\}/p"que parece hacer exactamente lo que quiero, incluido el cierre }y la corrección de espacios si hay alguno
sed -n "/AuthorYear/,/\}$/p". Tenga en cuenta el$símbolo. Funciona bien, excepto que no imprime el cierre}de un bibitem. Por cierto, ¿essednecesario el uso de ?