O formato para grep
é o que chamamos de "expressão regular POSIX" (procure) e suporta algumas primitivas de correspondência simples. Se você sabe que quer apenas caracteres alfanuméricos, pode usar uma classe de caracteres como esta: [a-zA-Z0-9]
. grep
tem até um atalho para essa classe específica (porque é tão útil) assim: [[:alnum:]]
. man grep
tem muito mais informações sobre isso.
Você também pode usar a contagem de repetição para especificar quantos desses caracteres deseja corresponder. No seu caso, você quer corresponder: 1 caractere alfanumérico, depois um ponto, depois mais um caractere e, em seguida, um traço seguido por 7 caracteres. Na expressão regular POSIX isto parece assim:
[[:alnum:]]\.[[:alnum:]]-[[:alnum:]]{7}
Notas:
- Eu tive que escapar do período com uma barra invertida, caso contrário, ele será resolvido como a expressão regular "pegar todos os caracteres".
- Para que a cláusula de repetição (chaves) funcione, é necessário ativar o "modo de expressão regular estendida" usando
-e
ou executandoegrep
em vez do padrãogrep
.
Assim, o comando completo pode ter esta aparência:
egrep '[[:alnum:]]\.[[:alnum:]]-[[:alnum:]]{7}' /some/file
A saída será as linhas onde a expressão correspondeu, possivelmente destacada em cores (dependendo do seu terminal). Se o seu arquivo de pacote não for delimitado por linha (talvez seja binário), espere muita confusão na tela.