我的日志具有以下模式:
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