Extraindo tempo dos logs usando tcl, espere

2

Eu tenho logs com o seguinte padrão:

1,30.10.2014,07:51:07,0,0,1,12,28,255,3,255,255,255,0,0,0;
2001,30.10.2014,07:51:07,0,0,0,300,5,0,255;

Eu preciso extrair data e hora ... para a primeira linha Eu faço o seguinte:

set starttime [string range $procline 2 20]

Mas como posso extraí-lo se o identificador (o código antes do tempo) for maior? Estou usando o expect (tcl). Eu tentei combinar a string, mas talvez eu esteja fazendo algo errado. A linha já está carregada como $procline .

Eu tentei muitas maneiras diferentes de outras respostas que encontrei aqui nos fóruns, mas nada realmente funcionou para mim.

    
por Shiunbird 03.11.2014 / 16:03

3 respostas

0

Tcl:

set fields [split $procline ,]
set timestamp [join [lrange $fields 1 2]]
set time [clock scan $timestamp -format "%d.%m.%Y %T"]

Ou, de uma só vez:

set time [clock scan [join [lrange [split $procline ,] 1 2]] -format "%d.%m.%Y %T"]
    
por 03.11.2014 / 17:35
0

usando o awk

awk -F ',' '{print $2,$3}' log_file.txt

se a data e a hora estiverem na 2ª e 3ª posição separadas por vírgula

você pode fazer assim se você armazenar a variável

while read x;do a='echo $x | awk -F ',' '{print $2,$3}'';
#now do whatever you want to do with your variable 
done < log_file.txt
    
por 03.11.2014 / 16:34
0

Se você não quiser que awk seja capaz de usar apenas bash bultins

 IFS=, read a MY_DATE MY_TIME b <<< $procline ; echo $MY_DATE $MY_TIME
    
por 03.11.2014 / 17:11