使用 tcl 从日志中提取时间,期望

使用 tcl 从日志中提取时间,期望

我的日志具有以下模式:

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;

我需要提取日期和时间...对于第一行我执行以下操作:

set starttime [string range $procline 2 20]

但是如果标识符(时间之前的代码)较长,我该如何提取它呢?我正在使用期望(tcl)。我尝试匹配字符串,但也许我做错了什么。该行已加载为$procline.

我尝试了许多不同的方法,这些方法与我在论坛中找到的其他答案不同,但没有什么真正对我有用。

答案1

泰克:

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

或者,一口气:

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

答案2

使用 awk

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

如果日期和时间位于第二个和第三个位置,并用逗号分隔

如果你要存储变量,你可以这样做

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

答案3

如果你不想,awk你可以使用bash bultins

 IFS=, read a MY_DATE MY_TIME b <<< $procline ; echo $MY_DATE $MY_TIME

相关内容