2014-08-28 32 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

相关问题