web-dev-qa-db-ja.com

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
2
user7897287

拡張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
Ravexina

7文字を超える行には、7文字のサブストリングも含まれます(これは式に一致します)。

anchoringを行の先頭と末尾に表現することで、完全一致のみを強制できます。

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 $.
0
steeldriver