如何使用 grep 提取 7 个字符

如何使用 grep 提取 7 个字符

我正在使用带有 的正则表达式grep。我想提取正好 7 个字符的密码,但结果得到的是 7 个甚至超过 7 个字符。

grep '[a-zA-Z0-9]\{7\}' /usr/share/wordlists/rockyou.txt

grep '[a-zA-Z0-9]\{7,7\}' /usr/share/wordlists/rockyou.txt

答案1

使用扩展的 grep:

grep  -E '^[a-zA-Z0-9]{7}$' /usr/share/wordlists/rockyou.txt

或者您自己的版本,例如:

grep '^[a-zA-Z0-9]\{7\}$' /usr/share/wordlists/rockyou.txt

甚至:

egrep '^.{7}$' /usr/share/wordlists/rockyou.txt

答案2

任何包含超过 7 个字符的行还包含一个 7 个字符的子字符串(将与您的表达式匹配)。

您可以通过以下方式强制仅完成匹配锚定表达式到行的开始和结束:

grep '^[a-zA-Z0-9]\{7\}$' /usr/share/wordlists/rockyou.txt

-x或者使用选项指定整行匹配

grep -x '[a-zA-Z0-9]\{7\}' /usr/share/wordlists/rockyou.txt

man grep

-x, --line-regexp
       Select  only  those  matches  that exactly match the whole line.
       For a regular expression pattern, this  is  like  parenthesizing
       the pattern and then surrounding it with ^ and $.

答案3

您可以cd进入目录并尝试以下命令:

grep ^.......$ *
  • .--> 任何单个字符(因此七.就是七个字符)
  • *(星号) --> 当前目录中的所有文件(通常,名称以文字 开头的文件除外.)。如果愿意,您也可以提供文件名。

相关内容