Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

152
Views
¿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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!