2 votes

Comment extraire seulement 7 caractères en utilisant grep

J'utilise une expression régulière avec grep . Je veux extraire des mots de passe de 7 caractères exactement, mais j'obtiens 7 et plus de 7 caractères comme résultat.

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

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

2voto

Ravexina Points 50599

Utiliser le 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

2voto

steeldriver Points 118154

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 en 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écifier une correspondance sur toute la ligne à l'aide de l'option -x option

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

En 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 $.

-2voto

exp0890 Points 87

Vous pouvez cd dans le répertoire et essayez la commande ci-dessous :

grep ^.......$ *
  • . --> tout caractère unique (donc sept . est de sept caractères)
  • * (astérisque) --> tous les fichiers du répertoire courant (sauf, en général, ceux dont le nom commence par une lettre . ). Vous pouvez également indiquer le(s) nom(s) du fichier si vous le souhaitez.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X