2011-10-19 12 views
1

以下是我工作的一個過程的輸出。如何一次性剪切第一場和其他場地的部分?

10/19/2011 14:11:52.911728,15277,828,2964,1,1

10/19/2011 14:11:53.915060,34298,898,3096,1,1

但是,使用這個輸出,我需要生成每分鐘的平均值。因此,我正在編寫一個shell程序來輸出所有這些,第一個字段只顯示小時和分鐘,而不是秒和微秒。

想知道什麼是從第一個字段和其他字段只產生小時和分鐘的最佳方法。這在我腦海

一個想法是,

cut -d"," -f2- source >file1 
cut -d"," -f1 source | cut -d":" -f1,2 >file2 
paste file2 file1 

但是這可以一次性實現?

回答

2

如果日期和時間的長度是固定的,只是通過柱切割:

$ cut -c1-15,26- < source 
10/19/2011 14:18, 15277, 828, 2964, 1, 1 
10/19/2011 14:10, 34298, 898, 3096, 1, 1 

如果除了分鐘一切可以是可變長度,用sed:

$ cat source 
10/19/2011 14:11:52.911728, 15277, 828, 2964, 1, 1 
10/19/2011 14:11:53.915060, 34298, 898, 3096, 1, 1 
10/19/2011 4:11:53.915060, 34298, 898, 3096, 1, 1 
$ sed 's/\([^:]*:..\)[^,]*\(, .*\)/\1\2/' < source 
10/19/2011 14:11, 15277, 828, 2964, 1, 1 
10/19/2011 14:11, 34298, 898, 3096, 1, 1 
10/19/2011 4:11, 34298, 898, 3096, 1, 1 
+0

不必要的。小時,可能是單個數字。 – user373215

+0

嗨,Vebjorn,你介意在sed結尾使用1和2的單行解釋嗎? – user373215

+0

@ user373215,它們是由括號括起來的正則表達式部分的反向引用。 –