Como extrair apenas 7 caracteres usando grep

1

Estou usando uma expressão regular com grep . Eu quero extrair exatamente 7 senhas de caracteres, mas estou obtendo 7 e mais de 7 caracteres como resultado.

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

    grep '[a-zA-Z0-9]\{7,7\}' /usr/share/wordlists/rockyou.txt
    
por user7897287 02.05.2017 / 21:42

2 respostas

1

Use o grep estendido:

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

ou sua própria versão como:

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

ou até mesmo:

egrep '^.{7}$' /usr/share/wordlists/rockyou.txt
    
por Ravexina 02.05.2017 / 21:44
0

Qualquer linha que contenha mais de 7 caracteres também contém uma substring de 7 caracteres (que corresponderá à sua expressão).

Você pode forçar somente correspondências completas ancorando a expressão no início e no final da linha:

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

ou especifique a correspondência de linha inteira usando a opção -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 $.
    
por steeldriver 02.05.2017 / 21:48