grep se comportando de forma anormal

2

grep está se comportando de maneira diferente quando a letra a está sendo pesquisada. quando a letra a é incluída nos critérios de pesquisa, ela não está procurando por outra letra. Mas não é o mesmo caso com outros personagens. Por quê?!

Para o comando: grep [aeiou] file1 ou grep [eioau] file1 ou grep [a,e,i,o,u] file1 , está mostrando a seguinte saída:

Name : file1 
a

Note1: letter 'a' is being highlighted as searched character in output(screenshot attached).

E para o comando: grep [eiou] file1 ou grep [e,i,o,u] file1 , está mostrando a seguinte saída:

this is test file.
Name : file1

Note2: letters 'e' & 'i' are being highlighted as searched characters in output(screenshot attached).

file1 é:

this is test file.
Name : file1
a

    
por Sachin 31.03.2015 / 14:33

1 resposta

7

Você tem um arquivo chamado a em seu diretório atual. você não citou o RE passado para grep , então é isso que está acontecendo:

Dado

grep [aeiou] file1

O shell vê [aeiou] e, como é um padrão válido (glob), ele tenta corresponder isso a um único arquivo de letra a , e , i , o , u . Como ele é bem sucedido, substitui o parâmetro pelo arquivo correspondente, a . O resultado inteiro é então executado como um comando:

grep a file1

E isso lhe dá a saída que você está vendo. Devo salientar que, se a concha não pode glob seu padrão deixa inalterado. Isso permite que [eiou] tenha sucesso, onde aparentemente [aeiou] "falha".

A solução é citar os seus parâmetros que não são de arquivo, assim:

grep '[aeiou]' file1
    
por 31.03.2015 / 14:42

Tags