Extrai dados de um arquivo de texto com grep

1

Eu tenho a seguinte linha em um arquivo de texto:

severity: Error , count: 10 violations , waived: 7, not waived: 3

Como pode extrair o número após not waived: (ou seja, 3 ) usando um único comando grep em um tcsh shell?

    
por vishnu varkala 09.02.2017 / 10:49

1 resposta

3

Seria mais fácil com awk neste caso:

% awk '{ print $NF }' file.txt
3

$NF são os dados no último campo delimitado por espaço em branco (coluna) no registro de entrada (linha).

grep é geralmente usado para obter linhas inteiras correspondentes a um padrão específico, mas algumas implementações também podem ser usadas para obter bits de linhas, usando o -o flag (retornará apenas o bits que são correspondidos):

% grep -o '[[:digit:]]$' file.txt
3

Mas, para o processamento geral de dados em linhas, recomendo awk over grep .

Se o arquivo contiver outras linhas de dados menos relevantes:

% awk '/^severity:/ { print $NF }' file.txt

Se, adicionalmente, o campo não estiver no extremo da linha, talvez você queira usar sed :

% sed -n '/^severity:/s/^.*not waived: \([[:digit:]]*\).*$//p' file.txt
3
    
por 09.02.2017 / 10:52