J'utilise une expression régulière avec grep
. Je veux extraire exactement 7 mots de passe, mais je reçois 7 et plus de 7 caractères.
grep '[a-zA-Z0-9]\{7\}' /usr/share/wordlists/rockyou.txt
grep '[a-zA-Z0-9]\{7,7\}' /usr/share/wordlists/rockyou.txt
Utilisez grep étendu:
grep -E '^[a-zA-Z0-9]{7}$' /usr/share/wordlists/rockyou.txt
ou votre propre version comme:
grep '^[a-zA-Z0-9]\{7\}$' /usr/share/wordlists/rockyou.txt
ou même:
egrep '^.{7}$' /usr/share/wordlists/rockyou.txt
Toute ligne contenant plus de 7 caractères contient également une sous-chaîne de 7 caractères (qui correspondra à votre expression).
Vous pouvez forcer uniquement les correspondances complètes par ancrage l'expression au début et à la fin de la ligne:
grep '^[a-zA-Z0-9]\{7\}$' /usr/share/wordlists/rockyou.txt
ou spécifiez une correspondance de ligne entière à l'aide de l'option -x
grep -x '[a-zA-Z0-9]\{7\}' /usr/share/wordlists/rockyou.txt
De 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 $.