Extraindo padrões de arquivos

0

Estou tentando extrair padrões de catar um arquivo em um script bash. Eu preciso extrair 10 e 80 linha por linha. Como faço isso?

Total Branch Predictor Mispredictions: 10
Total Branch Predictor OK predictions: 80
    
por snihalani 21.10.2012 / 20:26

1 resposta

4
$ cat > data
Total Branch Predictor Mispredictions: 10
Total Branch Predictor OK predictions: 80
$ cat data | awk '{print $NF}'
10
80
$ cat data | awk '{printf "%s ",$NF}'
10 80 $ awk '{printf "%s ",$NF}' < data
10 80 $

awk não apenas sabe $1 , $2 etc. para endereçar a coluna n -th, mas também $NF para endereçar a última coluna (neste caso, 10 e 80 ). O segundo comando utiliza printf em vez de print para cuspir tudo em uma linha (observe a nova linha ausente no final). O terceiro comando evita usar cat .

Existe também uma solução envolvendo sed :

$ sed 's/^[^:]*: \([0-9]*\)/ /' < data
10
80

E um envolvendo apenas bash :

$ while read line; do printf "%s " "${line##*: }"; done < data; echo
10 80 
$ 

que lê o arquivo linha por linha, manipula a variável line excluindo o maior padrão correspondente da esquerda (neste caso: tudo até : ) e passando para printf , que então prossegue para formate-o. Eu adicionei echo no final para obter uma nova linha final:)

    
por 21.10.2012 / 20:35

Tags