Saltar al contenido

Encuentra títulos de artículos duplicados en mi archivo .bib

Esta reseña ha sido evaluado por nuestros expertos así se asegura la exactitud de nuestra esta noticia.

Solución:

podrías usar perl para revisar el archivo bib, guarde todos los títulos como un hash key con su línea como el valor hash, y luego recorrerlo e imprimir el título si su valor tiene múltiples entradas. Para hacerlo, cree un archivo con el siguiente contenido, por ejemplo, “finddupls.pl”, cambie el nombre del archivo bib y luego ejecute perl finddupls.pl en tu terminal:

#!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
    $seenlc($1) .= "$line," if /^s*titles*(.+)$/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;

Devuelve directamente en la terminal algo como esto:

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,

Y además escribe un archivo sorted_titles.txt enumera todos los títulos ordenados alfabéticamente que puede revisar y detectar duplicados manualmente.

Si puedes confiar en el title campo siendo idéntico, entonces un muy simple:

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

Esto imprimirá solo líneas no únicas (-d) y el número de veces que aparecen (-c) para el archivo bibliography.bib y el número de línea que aparecen (-n) en el archivo de bibliografía; el -f 1 dice uniq para ignorar el primer campo, que sería este número de línea.

Entonces, si obtienes una línea como:

     2 733:  title =    Ethica Nicomachea,

Sabes que tienes dos apariciones de title = Ethica Nicomachea, y el primero de ellos aparece en la línea 733 de tu .bib Archivo.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *