2015-10-05 27 views
-1

我有一個類似的問題,這裏描述Awk: extract different columns from many different files,但在我的情況下,我有很多文件作爲輸入(可以是40,可以是500),並且每個文件都遵循乳膠格式,如來自不同文件的和列總和

#description & value1 & value2 
    cut1 & XXX & YYY & ZZZ 
    cut2>B & QQQ & TTT & GGG 

所以,我想下不同的輸入文件相同的列數來總結所有的值,所以最後我得到這樣

cut1 & SUM_XXX & SUM_YYY & SUM_ZZZ 
cu2>B & SUM_QQQ & SUM_TTT & SUM_GGG 

一個新的文件同樣,值可以是科學格式..我想這樣做在bash或python。提前致謝!

+0

您可能會發現蟒蛇['csv'模塊(https://docs.python.org/3.5/library/csv.html )有幫助。 – lvc

+0

你需要的是1)讀取文件; 2)使用字符'&'分割一行(字符串); 3)總結這些值。您可以在Python中使用csv模塊,也可以使用內置函數自己做。無論哪種方式,我認爲你會減少與python鬥爭,所以試試看,讓我們知道它是如何。 – rll

+0

只需發佈一些示例輸入和輸出,以便我們有機會提出正確的答案... –

回答

0

awk來拯救!

如果只有三列聚合這會做

$ awk 'BEGIN{FS=OFS="&"} 
      {k=$1;a[k]+=$2;b[k]+=$3;c[k]+=$4} 
     END{for(i in a) print i,a[i],b[i],c[i]}' files*