web-dev-qa-db-fra.com

Comment extraire seulement 7 caractères en utilisant grep

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

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

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