Como você deseja uma string alfanumérica de 1 a 50 caracteres (idealmente, qualquer comprimento também funcionaria) com dois pontos de cada lado - um resultado típico seria todas as linhas que contêm a string :shopping:
. Até agora, tenho o código abaixo (tentei algumas variações) que não funciona:
grep ':[[:alnum:]]{1,100}:' ~/x.txt
grep
incluindo o-E
comutador.Respostas:
Você precisa habilitar expressões regulares estendidas para isso:
fonte
Com expressões regulares básicas, você pode escrever como:
Observe que
\{
(ao contrário de\+
ou\?
por exemplo) é padrão e portátil e, na verdade, os equivalentes BRE de+
e?
geralmente são escritos com\{
:\{1,\}
e\{0,1\}
.grep -E
também é padrão e portátil, portanto, você pode usá-lo da mesma maneira que cria regexps mais legíveis nesses casos.fonte
Você está usando uma expressão regular estendida, portanto, é necessário usar a opção -E:
fonte
Como ninguém mais o mencionou, você também pode usar o
egrep
que, como eu o entendo, é equivalente agrep -E
.fonte
egrep
foi o comando histórico para grep com EREs. A funcionalidade do grep e egrep foi (há muito tempo) mesclada no grep com a opção -E.egrep
agora é considerado obsoleto / obsoleto (mas é improvável que ocorra porque algumas pessoas ainda estão acostumadas).