Extraindo números que precedem uma palavra

0

Digamos que eu tenha um programa que produza várias linhas, algumas das quais contêm a palavra messages precedida por um número. Como eu poderia extrair apenas aqueles números? (E como eu poderia produzir apenas a soma deles?)

    
por Toothrot 19.06.2018 / 15:38

2 respostas

1

Usando grep :

grep -Po "[0-9]+(?= messages)"

Explicação :

  • -P : use perl-regex (PCRE)
  • -o : imprima apenas a correspondência em vez da linha correspondente.
  • [0-9]+ corresponde a dígitos.
  • (?= messages) corresponde apenas se "mensagens" seguir (= lookahead positivo ).
por 19.06.2018 / 17:35
2

Com awk e supondo que sejam números inteiros decimais com espaços em branco opcionais entre o número e messages :

cmd | awk '
  match($0, /[[:digit:]]+[[:space:]]*messages/) {
    sum += substr($0, RSTART)
  }
  END {print 0+sum}'

com perl :

cmd | perl -lne '$s += $1 if /(\d+)\s*messages/; END{print 0+$s}'
    
por 19.06.2018 / 15:47