Duplizierte Artikeltitel in meiner BIB-Datei finden

Duplizierte Artikeltitel in meiner BIB-Datei finden

Ich schreibe meine Abschlussarbeit und habe einige Inhalte aus früheren .bib-Dateien kopiert und eingefügt. Aber vielleicht habe ich für denselben Artikeltitel unterschiedliche Bezeichnungen verwendet und diese unterschiedlichen Bezeichnungen in meiner Abschlussarbeit zitiert, sodass meine Referenzen denselben Artikel möglicherweise zweimal enthalten. Ich habe fast 190 Referenzen und ich glaube, es wird schwierig sein, wiederholte Artikel visuell zu finden.

Ist es möglich, in meiner Bib-Datei Einträge mit demselben Titel zu finden? Ich weiß, dass Bibtex nach wiederholten Bezeichnungen sucht. Ist es möglich, in meiner .bib-Datei wiederholte Titel zu finden?

Antwort1

Sie können perldie Bib-Datei durchgehen, alle Titel als Hash-Schlüssel mit der entsprechenden Zeile als Hash-Wert speichern und dann eine Schleife durchlaufen und den Titel drucken, wenn sein Wert mehrere Einträge hat. Erstellen Sie dazu eine Datei mit folgendem Inhalt, z. B. „finddupls.pl“, ändern Sie den Bib-Dateinamen und führen Sie sie dann perl finddupls.plin Ihrem Terminal aus:

#!perl
my %seen = ();

my $line = 0;
open my $B, 'file.bib';
while (<$B>) {
    $line++;
    # remove all non-alphanumeric characters, because bibtex could have " or { to encapsulate strings etc
    s/[^a-zA-Z0-9 _-]//ig; 
    # lower-case everything to be case-insensitive
    # pattern matches lines which start with title
    $seen{lc($1)} .= "$line," if /^\s*title\s*(.+)$/i;
}
close $B;

# loop through the title and count the number of lines found
foreach my $title (keys %seen) {
    # count number of elements seperated by comma
    my $num = $seen{$title} =~ tr/,//;
    print "title '$title' found $num times, lines: ".$seen{$title},"\n" if $num > 1;
}

# write sorted list into file
open my $S, '>sorted_titles.txt';
print $S join("\n", sort keys %seen);
close $S;

Es gibt direkt im Terminal etwa Folgendes zurück:

title 'observation on soil moisture of irrigation cropland by cosmic-ray probe' found 2 times, lines: 99,1350,
title 'multiscale and multivariate evaluation of water fluxes and states over european river basins' found 2 times, lines: 199,1820,
title 'calibration of a non-invasive cosmic-ray probe for wide area snow water equivalent measurement' found 2 times, lines: 5,32,

Außerdem wird eine Datei sorted_titles.txtmit einer alphabetisch geordneten Auflistung aller Titel erstellt, die Sie manuell durchgehen und auf Duplikate prüfen können.

Antwort2

Wenn Sie sich darauf verlassen können, dass die titleFelder identisch sind, dann ist Folgendes ganz einfach:

grep -n 'title =' bibliography.bib | uniq -cdf 1

Dadurch werden nur nicht eindeutige Zeilen ( -d) und die Häufigkeit ihres Auftretens ( -c) für die Datei bibliography.bibsowie die Zeilennummer ( -n) ihres Auftretens in der Bibliografiedatei gedruckt. Dies -f 1weist an uniq, das erste Feld, das diese Zeilennummer wäre, zu ignorieren.

Wenn Sie also eine Zeile wie die folgende erhalten:

     2 733:  title =    {Ethica Nicomachea},

Sie wissen, dass es zwei Vorkommen von gibt title = {Ethica Nicomachea},und dass das erste davon in Zeile 733 Ihrer .bibDatei erscheint.

verwandte Informationen