我正在使用带有 的正则表达式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 ^.......$ *
.
--> 任何单个字符(因此七.
就是七个字符)*
(星号) --> 当前目录中的所有文件(通常,名称以文字 开头的文件除外.
)。如果愿意,您也可以提供文件名。