2010-12-22 19 views
11

¿Cómo se puede hacer coincidir hash MD5 con el comando grep?a grep hashes MD5

en PHP que utiliza este patrón de expresión regular en el pasado:

/^[0-9a-f]{32}$/i 

pero he intentado:

grep '/^[0-9a-f]{32}$/i' filename 
grep '[0-9a-f]{32}$/' filename 
grep '[0-9a-f]{32}' filename 

y otras variantes, pero no estoy recibiendo nada como salida, y sé para asegurarse de que el archivo contiene md5 hash.

Respuesta

13

Quiere esto:

grep -e "[0-9a-f]\{32\}" filename 

O más bien, sobre la base de su descripción de formato de archivo, esto:

grep -e ":[0-9a-f]\{32\}" filename 
0

Meh.

#!/bin/sh 
while IFS=: read filename filesize hash 
do 
    if [ -z "$hash" ] 
    then 
    echo "$filename" 
    fi 
done < hashes.lst 
3

Bueno, dado el formato del archivo, la primera variante no funcionará porque usted está tratando de coincidir con el comienzo de la línea.

Dados los siguientes contenidos de archivo:

a1:52:d048015ed740ae1d9e6998021e2f8c97 
b2:667:1012245bb91c01fa42a24a84cf0fb8f8 
c3:42: 
d4:999:85478c902b2da783517ac560db4d4622 

El siguiente debe funcionar para mostrarle qué líneas tienen el MD5:

grep -E -i '[0-9a-f]{32}$' input.txt 

a1:52:d048015ed740ae1d9e6998021e2f8c97 
b2:667:1012245bb91c01fa42a24a84cf0fb8f8 
d4:999:85478c902b2da783517ac560db4d4622 

-E para el apoyo de expresión regular extendida, y -I para ignorar cuidado en el patrón y el archivo de entrada.

Si usted quiere encontrar las líneas que no coinciden, tratar

grep -E -i -v '[0-9a-f]{32}$' input.txt 

El -v invierte el partido, por lo que muestra las líneas que no tienen un MD5.

+0

Err ... ¿acaso la pregunta original no tenía una descripción del archivo que estaba revisando? Las respuestas que hemos proporcionado no tienen sentido en su totalidad en el nuevo, menos detallada, pregunta. –

+0

1 por tomarse el esfuerzo para explicar lo que estaba causando el partido fallido de grep. – GuruM