De que serve? no comando grep .. E uso prático

4

Eu tentei encontrar o uso prático real de? isto é, por exemplo "egrep a? nomedoarquivo" mas não foi capaz de encontrar nenhum. Ele retorna todos os resultados ..

Então, por favor me ajude onde eu poderia saber o uso real do egrep? comando ..

Se eu usar 'a?', ele retornará todos os resultados, ou seja, strings ou linhas. que tem 0 a's, 1 a's, 2 a's e assim por diante .. ou seja, eu não sou capaz de encontrar o uso do mesmo ..

Obrigado

    
por RBA 15.08.2009 / 17:13

4 respostas

8

Digamos que você queira corresponder expressões de atribuição numérica como essa em um script:

x=1234

em que alguns números são negativos e têm sinal de menos:

x=-5678

Você poderia usar isto:

grep -E "x=-?[0-9]+" *

O ponto de interrogação torna o menos opcional.

(Eu não acho que o grep simples suporta ? ou + , daí -E ).

    
por 15.08.2009 / 17:18
4

É uma pesquisa de um único caractere, correspondendo a um ou zero do caractere antes dele.

Nota: você precisa escapar do? usando um \ first: \ ?.

    
por 15.08.2009 / 17:17
4

? não é um metacaractere no grep básico, portanto, se você estiver ganhando a? , na verdade você estará usando a seguido por um ponto de interrogação.

Se você estava usando egrep (também conhecido como grep -E ), as respostas indicando que ? é um metacaractere de expressão regular de zero ou uma da entidade anterior seriam corretas.

    
por 15.08.2009 / 17:25
1

Em regex speak, a? significa 0 ou 1 'a'. Então, se você procurar por uma string que tenha 0 ou 1 a, você terá tudo. Um lugar onde seria útil corresponder a inteiros positivos:

/^\+?\d+$/

que se desenrola como

^: beginning of line
\+: + sign
?: 0 or 1 of previous character
\d: digit
+: one or more of previous character
$: end of line

e corresponderia a ambos os +123 e 456

Dê uma olhada em regular-expressions.info para mais informações sobre como usar o regex.

    
por 15.08.2009 / 19:39

Tags