2010-12-22 184 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