您好,我有 2 个以下格式的 csv(基本上是电子邮件列表以及该发件人向我们发送电子邮件的次数):
文件1.csv
Email,Value
[email protected],2
e[email protected],4
[email protected],1
[email protected],6
文件2.csv
Email,Value
[email protected],3
e[email protected],6
[email protected],8
[email protected],2
每个表中的值可能不同,我想要做的是将结果输出到一个新的 CSV,如下所示:
文件3.csv
Email,Value1,Value2
[email protected],2,3
[email protected],4,6
[email protected],1,8
[email protected],6,2
我有一个bash
我从其他地方获取的脚本,它完成了部分工作,但它没有列出我正在寻找的结果。
任何人都可以帮忙编写一个 bash 脚本吗?
#!/bin/bash
join -t"," -1 1 -2 1 -a1 file1.csv file2.csv | awk -F, ' BEGIN {
print "Email,Value"
} NF > 3 {
if ( $3 != $5 )
print $1, $3, $5
if ( $2 != $4 )
print $1, $2, $4
} ' OFS=,
这是我使用以下命令得到的结果:
awk 'BEGIN{FS=OFS=","; printf "Name,Value1,Value2\n"}NR >1 &&
FNR==NR{map[$1]=$2; next}$1 in map{$(NF+1)=map[$1]; print}' file2.csv
file1.csv
结果:
Name,Value1,Value2
,[email protected],2
,[email protected],4
,[email protected],1
[email protected],6,2