2010-12-22 98 views
11

如何匹配md5哈希与grep命令?使用grep匹配md5哈希

在PHP我在过去使用正则表达式模式:

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

但我想:

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

与其他变种,但我没有得到任何东西作为输出,我知道肯定该文件包含md5散列。

回答

13

你想这样的:

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

还是更喜欢,根据您的文件格式的描述,这样的:

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

呃。

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

好吧,给你的文件的格式,第一个变种将无法正常工作,因为您正在尝试匹配该行的开头。

鉴于以下文件内容:

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

下应努力向您展示哪些行有MD5:

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

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

-E延长的正则表达式的支持,并为-i忽略注意模式和输入文件。

如果你想找到不匹配的线路,尽量

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

的-v反转匹配,所以它表明你没有一个MD5的线条。

+0

Err ...原始问题没有描述他正在扫描的文件吗?我们提供的答案在新的,不太详细的问题中并不完全合理。 – 2010-12-22 05:24:49