grep comando retornando 0 - corresponde todos os caracteres que não são dígitos globalmente

0

Estou procurando pesquisar em um arquivo todas as strings que não contêm dígitos. Eu criei o seguinte regex.

\D*/g

O que funciona como eu quero na ferramenta on-line: link , mas quando eu executo o seguinte comando:

grep -c "\D*/g" nonDistortResults.txt 

Ele está retornando 0 .

O arquivo é formatado da seguinte forma:

2573
kitchenDoor 2573
2573
2573
2573
2574
2574
2574
2574
kitchenDoor 2574
2574
2574
2575
2575
2575
2575
2575
kitchenDoor 2575
2576

Portanto, no exemplo acima, eu esperaria que ele retornasse 3 .

    
por Colin747 03.12.2015 / 12:21

1 resposta

1

Você precisa adaptar seu padrão da seguinte forma:

grep -c \D nonDistortResults.txt
  • Não precisamos do sinalizador "ganancioso", pois o grep já trabalha com linhas
  • As citações não são necessárias aqui
  • A estrela pode ser qualquer número de resultados, incluindo 0 (portanto, usá-la retornará verdadeira para cada linha)

Se você precisar usar novamente algumas expressões regulares da Pearl (PCRE), você pode dar uma olhada na opção -P do grep, mas a página de manual diz:

-P, --perl-regexp
Interpret PATTERN as a Perl regular expression (PCRE, see below). This is highly experimental and grep -P may warn of unimplemented features.

    
por 03.12.2015 / 13:31