Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

149
Vistas
¿Por qué la comparación de dos archivos md5sum no funciona correctamente?

Tengo 2 listas con archivos con sus controles md5sum y las listas tienen diferentes rutas para los mismos archivos.

Ejemplo de contenido en el primer archivo con sumas de verificación (server.list):

 2c03ff18a643a1437ec0cf051b8b7b9d /tmp/fastq1_L001_R1_001.fastq.gz c430f587aba1aa9f4fdf69aeb4526621 /tmp/fastq1_L001_R2_001.fastq.gz/ 6e6bcd84f264233cf7c428c0cfdc0c03 tmp/fastq1_L002_R1_001.fastq.gz

Ejemplo de contenido en dos archivos con sumas de verificación (downloaded.list):

 2c03ff18a643a1437ec0cf051b8b7b9d /home/projects/fastq1_L001_R1_001.fastq.gz c430f587aba1aa9f4fdf69aeb4526621 /home/projects/fastq1_L001_R2_001.fastq.gz 6e6bcd84f264233cf7c428c0cfdc0c03 /home/projects/fastq1_L002_R1_001.fastq.gz

Cuando ejecuto la siguiente línea, obtuve las siguientes líneas:

 awk -F"/" 'FNR==NR{filearray[$1]=$NF; next }!($1 in filearray){printf "%s has a different md5sum\n",$NF}' downloaded.list server.list fastq1_L001_R1_001.fastq.gz has a different md5sum fastq1_L001_R2_001.fastq.gz has a different md5sum fastq1_L002_R2_001.fastq.gz has a different md5sum

¿Por qué recibo este mensaje si la primera columna es la misma en ambos archivos? Alguien me puede iluminar sobre este tema?

Editar:

Si elimino la ruta y dejo solo el nombre del archivo, funciona bien.

Edición 2:

Como se señaló, existe otra posibilidad de forma de ruta de archivo, que no comienza con / . En este caso, no puedo usar / como separador de campos.

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Suposiciones:

  • nombre de archivo (sin ruta) y md5sum tienen que coincidir
  • los nombres de archivo pueden no aparecer en el mismo orden
  • los nombres de archivo pueden no existir en ambos archivos

Data de muestra:

 $ head downloaded.list server.list ==> downloaded.list <== 2c03ff18a643a1437ec0cf051b8b7b9d /home/projects/fastq1_L001_R1_001.fastq.gz # match YYYYf587aba1aa9f4fdf69aeb4526621 /home/projects/fastq1_L001_R5_911.fastq.gz # different md5sum c430f587aba1aa9f4fdf69aeb4526621 /home/projects/fastq1_L001_R2_001.fastq.gz # match MNOPf587aba1aa9f4fdf69aeb4526621 /home/projects/fastq1_L001_R8_abc.fastq.gz # filename does not exist in other file ABCDf587aba1aa9f4fdf69aeb4526621 /home/projects/fastq1_L001_R9_004.fastq.gz # different filename but matching md5sum (vs last line of other file) ==> server.list <== 2c03ff18a643a1437ec0cf051b8b7b9d /tmp/fastq1_L001_R1_001.fastq.gz # match c430f587aba1aa9f4fdf69aeb4526621 /tmp/fastq1_L001_R2_001.fastq.gz # match XXXXf587aba1aa9f4fdf69aeb4526621 /tmp/fastq1_L001_R5_911.fastq.gz # different md5sum TUVWff18a643a1437ec0cf051b8b7b9d /tmp/fastq1_L999_R6_922.fastq.gz # filename does not exist in other file ABCDf587aba1aa9f4fdf69aeb4526621 /tmp/fastq1_L001_R7_933.fastq.gz # different filename but matching md5sum (vs last line of other file)

Una idea awk para abordar los problemas de espacios en blanco, así como para verificar las coincidencias de nombres de archivos:

 awk ' # stick with default field delimiter of white space but ... { md5sum=$1 n=split($2,arr,"/") # split 2nd field on "/" delimiter fname=arr[n] if (FNR==NR) filearray[fname]=md5sum else { if (fname in filearray && filearray[fname] == $1) next printf "%s has a different md5sum\n",fname } } ' downloaded.list server.list

Esto genera:

 fastq1_L001_R5_911.fastq.gz has a different md5sum fastq1_L999_R6_922.fastq.gz has a different md5sum fastq1_L001_R7_933.fastq.gz has a different md5sum
over 4 years ago · Santiago Trujillo Denunciar

0

El espacio en blanco en $1 utilizado como clave de matriz está causando problemas. Quitándolo:

 awk -F"/" '{gsub(/ /, "", $1)}; FNR==NR{filearray[ $1]=$NF; next }!($1 in filearray){printf "%s has a different md5sum\n",$NF}' list1.txt list2.txt
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda