Tengo un archivo bibtex grande con muchas entradas donde cada entrada tiene la estructura general
@ARTICLE{AuthorYear,
item = {...},
item = {...},
item = {...},
etc
}
(en algunos casos ARTICLE
podrí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 sed
para 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.
sed
no 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, ¿essed
necesario el uso de ?