Problemstellung

Problemstellung

Problemstellung

Ich habe eine große Datei, die ich in mehrere kleinere Dateien .bibaufteilen möchte ..bib

Dazu suche ich einen Parser, der es mir ermöglicht, beispielsweise alle @bookEinträge aus der Originaldatei zu extrahieren .bib, um diese dann in einer neuen Datei zu speichern. Die Einträge selbst sollen dabei grundsätzlich unberührt bleiben.

Nur für den Fall, dass es hilft: Ich verwende biblatex& biber(unter Debian GNU/Linux), das, soweit ich mich erinnere, einige Parsing-Funktionen bietet, die ich hier gerne einsetzen würde.

Antwort1

Dies ist mit dem Tool-Modus von Biber möglich. Leider gab es in Versionen vor 2.11 ein kleines Problem mit der genauen Funktionalität, die Sie benötigen. Das Problem wurde gemeldet (https://github.com/plk/biber/issues/212) und wird in Biber 2.11 gelöst.

Erstellen Sie eine onlybooks.confmit dem Inhalt

<?xml version="1.0" encoding="UTF-8"?>
<config>
  <output_align>true</output_align>
  <output_fieldcase>lower</output_fieldcase>
  <sourcemap>
    <maps datatype="bibtex" map_overwrite="1">
      <map>
        <per_nottype>book</per_nottype>
        <map_step map_entry_null="1" />
      </map>
    </maps>
  </sourcemap>
</config>

Dann rufen Sie Biber an mit

biber --tool --configfile=onlybooks.conf <yourfile>.bib

und Ihnen sollte eine Datei mit dem Namen angezeigt werden, <yourfile>_bibertool.bibdie nur die @bookEinträge von enthält <yourfile>.bib.

Der Vorbehalt, dass Biber in seinem Datenmodell unbekannte Felder löscht, gilt natürlich auch hier, sieheVerhindern Sie, dass „biber --tool“ nicht standardmäßige Felder in BIB-Dateien entfernt..


Alternativ können Sie verwenden bib2bibvon bibtex2html. Weitere Informationen finden Sie imPDF-Dokumentation.

Verwenden

bib2bib -c '$type = "BOOK"' -ob onlybooks.bib <yourfile.bib>

um nur die @bookEinträge von <yourfile>.bibin zu erhalten onlybooks.bib.

Der Typ muss immer in Großbuchstaben und in Anführungszeichen gesetzt werden. Unter Windows müssen die äußeren Anführungszeichen doppelt und die inneren einfach sein -c "$type = 'BOOK'", unter Unix muss es umgekehrt sein.-c '$type = "BOOK"'


Sie können auchbibtool:

bibtool --select{@book} all.bib -o some.bib

Schreibt nur die @bookEinträge von all.bibnachsome.bib

Einige Bibliografiemanager wie JabRef bieten auch die Möglichkeit, .bibDateien zu filtern. Vielleicht kann das hier auch genutzt werden.

verwandte Informationen