Grep: Por que os modificadores de escape?

0

Por modificadores, quero dizer o seguinte:

-\{m\} exactly m repetitions of previous character
- \{m,\} at least m repetitions of previous character
- \{m,n\} any number of repetitions of prev char between m and n inclusive
- \< beginning of word
- \> end of word

qual é a razão para escapar deles?

Por exemplo, se houver uma palavra "cat" dentro de file1:

$ egrep -n '\<cat\>' file1
17:cat

O comando acima encontra a palavra "gato", mas o que acontece com o comando abaixo, ele não retorna nada, mas o que ele está realmente fazendo?

$ egrep -n '<cat>' file1
    
por Saad A 20.02.2016 / 04:16

1 resposta

3

Como as primeiras versões de grep não reconheceram {…} , ? , + , (…) , < e > como meta-caracteres - eles apenas se equiparam. Os únicos meta-caracteres foram […] , ^ , $ , . , * e \ . Esse comportamento foi mantido para compatibilidade com versões anteriores (para que os scripts antigos ainda funcionassem da maneira que eles faziam sem precisar ser reescrito). Portanto, você precisa usar \ para ativar as propriedades especiais desses meta-personagens mais recentemente inventados, assim como n e t não significam nova linha e tabulação (eles significam n e t ); você precisa usar \n e \t para obter nova linha e guia.

    
por 20.02.2016 / 07:15