2014-08-28 50 views
1

我使用Ubuntu的,我們得到了與2列的CSV file1.csv看起來像如何使用awk在Ubuntu中添加2個csv文件的第二行值?

a,1 
b,1 
... 

和2列另一個file2.csv看起來像

a,24324 
b,432 

第一列是相同的,按file1.csv和file2.csv排序。 如何使用awk來添加的在Ubuntu 2個CSV文件中第二行的值來得到的結果是這樣的:

a,24325 
b,433 

回答

4

您可以使用以下awk

awk -F, -v OFS=, 'NR==FNR{a[$1]=$2;next}{$2+=a[$1]}1' file1.csv file2.csv 
a,24325 
b,433 

我們設置輸入和輸出字段分隔符爲,。使用NR==FNR構造,我們將file1.csv加載到數組anext允許我們使用第一個文件。一旦文件加載到內存中,我們移動到第二個文件,並將數組中的值添加到第二列。

這會將輸出打印到標準輸出。您可以將輸出重定向到另一個文件。

+0

Thx!如果我想計算(1-24324)/(1 + 24324)作爲第二列呢? 「awk -F,-v OFS =,'NR == FNR {a [$ 1] = $ 2; next} {$ 2 =(a [$ 1] - $ 2)/(a [$ 1] + $ 2)}'file1。 csv file2.csv「?? – user3692521 2014-08-28 22:19:31

+1

@ user3692521是的,這是正確的。雖然你可能想要檢查除數爲零。 – 2014-08-28 22:21:45

相關問題