Ich habe eine große Bibtex-Datei mit vielen Einträgen, wobei jeder Eintrag die allgemeine Struktur hat
@ARTICLE{AuthorYear,
item = {...},
item = {...},
item = {...},
etc
}
(in einigen Fällen ARTICLE
könnte ein anderes Wort zB sein BOOK
)
Was ich tun möchte, ist ein einfaches Skript (vorzugsweise nur ein Shell-Skript) zu schreiben, um Einträge mit einem bestimmten AuthorYear zu extrahieren und diese in eine neue BIB-Datei einzufügen.
Ich kann mir vorstellen, dass ich den ersten Satz eines Eintrags von AuthorYear und den letzten am einzelnen Abschluss erkennen }
und möglicherweise sed
zum Extrahieren des Eintrags verwenden kann, aber ich weiß nicht genau, wie ich das genau machen soll. Kann mir jemand sagen, wie ich das erreichen würde?
Es sollte wahrscheinlich so etwas sein
sed -n "/AuthorYear/,/\}/p" file.bib
Dies hört jedoch aufgrund des Schließens }
im ersten Element des Eintrags auf, wodurch diese Ausgabe erfolgt:
@ARTICLE{AuthorYear,
item = {...},
Ich muss also erkennen, ob das }
das einzige Zeichen in einer Zeile ist, und nur dann "sed" aufhören zu lesen, wenn dies der Fall ist.
sed
ist überhaupt nicht notwendig, ich dachte nur, das wäre die einfachste Option. Ich habe einen etwas anderen Code herausgefunden: Dieser sed -n "/AuthorYear/, /^ *\}/p"
scheint genau das zu tun, was ich will, einschließlich des Schließens }
und Korrigierens von Leerzeichen, falls vorhanden
sed -n "/AuthorYear/,/\}$/p"
. Beachten Sie das$
Symbol. Es funktioniert}
einwandfrei , außer dass das Schließen eines Bibitems nicht gedruckt wird . Übrigens, ist die Verwendung vonsed
notwendig?