2015-09-23 76 views
-1

我已經與3列的文本文件,這樣一個AWK:隨着值

2010-01-03 11:00:00 -134   
2010-01-03 11:01:00 -131   
2010-01-03 11:02:00 -128  
... 

現在我需要在幾秒鐘的時間步驟,而那麼現有的創建列。

如何在$ 2到$ 3之間創建一個新的列,並在文件末尾填充增值(0,60,120,...)?

回答

1

根據您的說法和數據,你可能需要這樣:

awk '{ print $1, $2, i*60, $3; i++;}' orifile 
+0

謝謝,工作就像一個魅力! – stephan

0

另一種解決方案,在awk

awk '$3=(NR-1)*60 FS $3' file 

你插入列,

 
2010-01-03 11:00:00 0 -134 
2010-01-03 11:01:00 60 -131 
2010-01-03 11:02:00 120 -128 
1

在連接與羅洛的答案略有縮短版本:awk '{ print $1, $2, (NR-1)*60, $3}' orifile

1

假設時間戳是不是所有的間隔均勻,你必須分析他們:隨着了GNU AWK你可以使用mktime做到這一點:

gawk '{ ts = $1 " " $2; gsub(/[-:]/, " ", ts); t = mktime(ts) } NR == 1 { start = t } { $2 = $2 OFS (t - start); } 1' 

這種工作方式如下:

{       # for all lines: 
    ts = $1 " " $2   # concat first and second fields, 
    gsub(/[-:]/, " ", ts)  # replace - and : with spaces. The result is the 
          # format mktime expects: "YYYY MM DD HH MM SS" 
    t = mktime(ts)   # convert to seconds since Epoch 
} 
NR == 1 {     # in the first line: 
    start = t     # set the starting point 
} 
{       # for all lines: 
    $2 = $2 OFS (t - start) # append the seconds since start to the second field, 
          # effectively inserting a third 
} 
1       # then print. 
+0

也很棒。我只需要它。 – stephan