Como obter as linhas que contêm -R com grep

3

Como posso encontrar "-R" em arquivos com grep? Eu tentei grep "-R" *.GNU para obter as linhas que contêm -R, mas não retorna nada.

    
por prosseek 25.06.2013 / 23:27

5 respostas

8

Tente:

grep -- -R *.GNU

O -- indica o fim das opções para que -R seja visto como um argumento em vez de uma opção para grep

    
por 25.06.2013 / 23:31
4

Uma boa quantidade de ferramentas GNU suporta uma opção na qual você pode informar à ferramenta ( rm , grep , ls , etc.) que você não quer mais que continue a análise das opções de linha de comando . Essa opção é facilitada marcando a entrada da linha de comando com um traço duplo -- .

Você pode ler mais sobre isso na FAQ do GNU CoreUtils . Especificamente, esta seção, intitulada: 11 Como faço para remover arquivos que começam com um traço .

Isso permite que os arquivos que começam com um traço (por exemplo, - ) sejam passados como argumentos da linha de comando:

exemplos

rm ./-stuff
rm /full/path/-stuff
rm -- -stuff

mv ./-stuff differentstuff
mv -- -stuff differentstuff
    
por 25.06.2013 / 23:40
3

As formas mais comuns

grep -- -R *.GNU funciona com algumas variantes do grep. O -- diz ao grep para parar de procurar por flags.

grep -e -R *.GNU também funciona. O -e diz ao grep que segue um padrão de pesquisa.

Alternativas

grep '[-]R' *.GNU

[-] é uma classe de caracteres . Como há apenas um caractere na classe, ele deve corresponder a um hífen ( - ).

grep '.\?-R' *.GNU

O ponto de interrogação diz ao grep que o caractere anterior a ele é opcional. O . corresponde a qualquer caractere.

grep '\(\)-R' *.GNU

Os parênteses constituem um grupo vazio.

    
por 26.06.2013 / 04:07
3
grep -e -R ./*.GNU

é outra possibilidade.

    
por 25.06.2013 / 23:42
0

Tente escapar do painel como

grep "\-R" *.GNU
    
por 26.06.2013 / 00:09

Tags