Scripting

使用 tcl 從日誌中提取時間,期望

  • November 4, 2014

我有以下模式的日誌:

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.

我嘗試了許多與我在論壇中找到的其他答案不同的方法,但對我來說沒有任何效果。

Tcl:

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"]

使用 awk

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

如果日期和時間位於以逗號分隔的第 2 位和第 3 位

如果你要儲存變數,你可以這樣做

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

引用自:https://unix.stackexchange.com/questions/165699