Como encontrar linhas com determinados números

0

Então eu tenho este arquivo que eu quero encontrar apenas as linhas que contêm uma certa frase seguida por um número diferente de zero. Estou pensando em usar o grep, mas não sei como formatá-lo para ignorar zeros. Uma linha seria assim:

2009-12-05 : Reindexing 100: [result]
2009-12-07 : Reindexing 0: [result]

E eu só quero a primeira linha.

Obrigado antecipadamente.

    
por CoopTang 18.05.2018 / 19:23

2 respostas

3

Para obter a primeira correspondência da frase Reindexing seguida por um número diferente de zero, use (GNU grep):

grep -m1 'Reindexing [1-9]' < input
    
por 18.05.2018 / 19:35
1

Se você realmente quer dizer "número diferente de zero", ou seja, deseja gerenciar:

  • números negativos,
  • frações - incluindo 0 < n < 1 (com o principal '0')

você precisa de algo mais poderoso que o grep. Por exemplo:

echo '2009-12-05 : Reindexing -0.7: [result]' | perl -ne 'print if /Reindexing -?(\d+(\.\d+)?+)(?!\w)/ and $1!=0'

Esta solução também excluiria strings como "100abc", que não são números: a parte "(!! \ w)" é o significado lookahead negativo "não seguido por caractere de palavra". Alterando a condição no final, você pode fazer qualquer filtragem que desejar.

    
por 18.05.2018 / 21:21