2016-02-24 46 views
-1

我有一個這樣的文件:減去在linux後續行

15:03:06:373 s1 13 s2 17 s3 15 s4 11 s5 7 15:03:06:450 
15:03:06:555 s1 13 s2 19 s3 18 s4 15 s5 9 15:03:06:656 
15:03:06:762 s1 13 s2 19 s3 21 s4 19 s5 13 15:03:06:833 
15:03:06:939 s1 13 s2 19 s3 21 s4 19 s5 13 15:03:07:013 

我怎樣才能用awk或一些腳本,以獲得其在S1的前值結果中減去行,S2等的之間相減行(如row2-row1,row3-row2)。結果將是:

15:03:06:373 s1 13 s2 17 s3 15 s4 11 s5 7 15:03:06:450 
15:03:06:555 s1 0 s2 2 s3 3 s4 4 s5 2 15:03:06:656 
15:03:06:762 s1 0 s2 0 s3 3 s4 4 s5 4 15:03:06:833 
15:03:06:939 s1 0 s2 0 s3 0 s4 0 s5 0 15:03:07:013 
+0

你的意思是減去絕對值嗎?例如,你有7 - 9 = 2,9 - 13 = 4。 – BRasmussen

+2

你需要付出一些努力! – Samer

+0

沒有實際的價值。也是負面的 –

回答

2

awk來救援!

$ awk '{for(i=3;i<NF;i+=2) {t=$i;$i-=s[i];s[i]=t}}1' file 

15:03:06:373 s1 13 s2 17 s3 15 s4 11 s5 7 15:03:06:450 
15:03:06:555 s1 0 s2 2 s3 3 s4 4 s5 2 15:03:06:656 
15:03:06:762 s1 0 s2 0 s3 3 s4 4 s5 4 15:03:06:833 
15:03:06:939 s1 0 s2 0 s3 0 s4 0 s5 0 15:03:07:013 

解釋和對齊留作練習。