【问题标题】:Using grep to match md5 hashes使用 grep 匹配 md5 哈希
【发布时间】:2011-05-29 04:26:17
【问题描述】:

如何使用 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 哈希。

【问题讨论】:

    标签: regex linux string grep


    【解决方案1】:

    一个在 Linux 和 OSX 上跨平台工作的小单线,只返回 MD5 哈希值(将 YOURFILE 替换为您的文件名):

    [ "$(uname)" = "Darwin" ] && { MD5CMD=md5; } || { MD5CMD=md5sum; } \
        && { ${MD5CMD} YOURFILE | grep -o "[a-fA-F0-9]\{32\}"; }
    

    例子:

    $ touch YOURFILE
    $ [ "$(uname)" = "Darwin" ] && { MD5CMD=md5; } || { MD5CMD=md5sum; } && { ${MD5CMD} YOURFILE | grep -o "[a-fA-F0-9]\{32\}"; }
    d41d8cd98f00b204e9800998ecf8427e
    

    【讨论】:

      【解决方案2】:

      好吧,鉴于您的文件格式,第一个变体将不起作用,因为您试图匹配行的开头。

      给定以下文件内容:

      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 的行。

      【讨论】:

      • Err... 最初的问题没有描述他正在浏览的文件吗?我们提供的答案在新的、不太详细的问题中并不完全有意义。
      • +1 感谢您努力解释导致 grep 匹配失败的原因。
      【解决方案3】:

      你想要这个:

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

      或者更像,根据你的文件格式描述,这个:

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

      【讨论】:

        【解决方案4】:

        嗯。

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

        【讨论】:

          猜你喜欢
          • 2020-12-08
          • 2019-10-10
          • 2011-09-12
          • 2014-05-19
          • 1970-01-01
          • 2013-08-20
          • 2016-06-24
          • 2012-07-22
          相关资源
          最近更新 更多