gpt4 book ai didi

linux - 如何在Ubuntu中使用awk获取2个csv文件中相同column2值的column1值的计算结果?

转载 作者:太空宇宙 更新时间:2023-11-04 03:53:10 25 4
gpt4 key购买 nike

我使用的是 ubuntu,我们得到了一个包含 2 列的 csv file1.csv

a,1
b,2
c,3
...

另一个包含 2 列的 file2.csv 看起来像

a,4
b,3
d,2
...

第 1 列的某些值出现在 file1.csv 中,但不在 file2.csv 中,反之亦然,并且这些值不应出现在 result.csv 中。假设 file1.csv 中第一列的值为 x,具有相同 column2 值的 file2.csv 中第一列的值为 y。如何在 Ubuntu 中使用 awk 计算 2 个 csv 文件的第二行的 (x-y)/(x+y) 以获得 result.csv,如下所示:

a,-0.6
b,-0.2

-0.6 的计算公式为 (1-4)/(1+4)-0.2 由 (2-3)/(2+3) 计算

最佳答案

这个怎么样?

$ awk 'BEGIN{FS=OFS=","} FNR==NR {a[$1]=$2; next} {if ($1 in a) print $1,(a[$1]-$2)/(a[$1]+$2)}' f1 f2
a,-0.6
b,-0.2

说明

  • BEGIN{FS=OFS=","}将输入和输出字段分隔符设置为逗号。
  • FNR==NR {a[$1]=$2; next}处理第一个文件时,存储在数组 a[] 中像a[first col]=second col这样的值.
  • {if ($1 in a) print $1,(a[$1]-$2)/(a[$1]+$2)}循环访问第二个文件时,在每一行执行以下操作:检查第一个列是否存储在 a[] 中大批;如果是这样,请打印 (x-y)/(x+y) ,是x=stored valuey=current second column .

关于linux - 如何在Ubuntu中使用awk获取2个csv文件中相同column2值的column1值的计算结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25622621/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com