linux - 如何在 Ubuntu 中使用 awk 添加 2 个 csv 文件的第二行的值?

标签 linux awk

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

a,1
b,1
...

另一个 file2.csv 有 2 列看起来像

a,24324
b,432

第一列相同,并在 file1.csv 和 file2.csv 中排序。 如何在 Ubuntu 中使用 awk 添加 2 个 csv 文件的第二行的值以获得如下结果:

a,24325
b,433

最佳答案

您可以使用以下 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 加载到数组 a 中。 next 允许我们处理第一个文件。一旦文件加载到内存中,我们就转到第二个文件,并将数组中的值添加到第二列。

这会将输出打印到 STDOUT。您可以将输出重定向到另一个文件。

关于linux - 如何在 Ubuntu 中使用 awk 添加 2 个 csv 文件的第二行的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25558655/

相关文章:

c - 如何从 C 程序和 Ubuntu 操作系统读取远程设备的文件?

Python XML 解析 - 相当于 bash 中的 "grep -v"

linux - GIT 未在替代用户下运行 -/bin/git :/bin/git: cannot execute binary file

arrays - 在 bash 中重命名文件的特定模式

bash - 如何更改第 n 列后的字段分隔符

linux - 在 expect 脚本中运行 bash 脚本

linux - 从目录中的所有文件中删除包含字符串的行

awk - 检索与 2 个不同文件匹配的 2 列中的所有行

linux - 如何在第二组单引号之间制作awk抓取字符串

unix - 在 '=' 之后使用 sed 返回值