Obtém o valor do tempo decorrido de um arquivo

0

Eu preciso buscar a saída do tempo decorrido do arquivo. Preciso do valor antes de "decorrido" que é 2:10:42 .

Conteúdo do arquivo:

312.90user 15.57system 2:10:42elapsed 4%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (1major+152440minor)pagefaults 0swaps
    
por MrAdfire 20.04.2017 / 19:47

3 respostas

0

Relativamente fácil com o Perl:

perl -n -E '/([0-9:]+)elapsed/ and say $1' «FILE»

Observe que apenas procura uma coisa semelhante ao tempo antes da palavra "decorrido" (sem espaços). Isso pode sofrer de um falso positivo se aplicado a outros arquivos. Além disso, ele irá verificar cada linha no arquivo (e imprimir qualquer tempo decorrido encontrado), não apenas o primeiro.

    
por 20.04.2017 / 20:11
0

Em linhas que contêm "(tempo) decorrido", procure por "(qualquer coisa) (espaço) (tempo) decorrido (qualquer coisa)" e substitua tudo por "(hora)" e imprima a linha resultante:

sed -n '/[0-9:]*elapsed/ { s/.* \([0-9:]*\)elapsed.*//;p }' input > output
    
por 20.04.2017 / 20:18
0

Basta fazer isso:

Supondo que seus dados estão em um arquivo chamado arquivo , você pode fazer isso:

$ head -1 file | awk '{ print $3 }' | sed 's/elapsed//'

E ele retornará: 2:10:42

Quebrando:

Pegue a primeira linha do seu arquivo com:

head -1 file

O trabalho pesado é feito por awk :

awk '{ print $3 }'

que apenas imprime o terceiro bloco de dados 2:10:42elapsed .

Em seguida, use o editor de string sed para arrumar:

sed 's/elapsed//'

Você pode redirecionar a saída para qualquer lugar que desejar, por exemplo, apenas adicione:

> output.text

para imprimir 2:10:42 em um arquivo chamado output.txt

Os itens acima irão sobrescrever (substituir) qualquer conteúdo no arquivo output.txt . Se você quiser anexar seus dados ao final do arquivo, use apenas >> em vez de > .

    
por 20.04.2017 / 20:33