计算其他文件中 csv 列中值的出现次数并附加为新列

计算其他文件中 csv 列中值的出现次数并附加为新列

我可以使用基本的 shell 工具(没有 Python 或 Perl)来完成这项工作吗?

输入1:

file1.csv
    John,Doe,[email protected]
    Andy,Barry,[email protected]
    Mary,,[email protected]

计算 INPUT2 中第三列 file1 中电子邮件的出现次数:

file2.log
    [email protected]&fghfgh
    asdda&[email protected]
    [email protected]&werewr

期望的输出:

result.csv
    John,Doe,[email protected],0
    Andy,Barry,[email protected],2
    Mary,,[email protected],1

非常感谢!

答案1

您没有提供有效的输入,所以我使用了这个:

John,Doe,[email protected]
Andy,Barry,[email protected]
Mary,,[email protected]

以下 awk 单行语句给出了预期结果:

awk -F, '{l[NR]=$0;f[NR]=$3;c[$3]++}END{for(i=1;i<=NR;i++)print l[i] "," c[f[i]]}'

这里的问题是您的任务需要两次传递。 (f[] 只是为了避免保留整个内容解析,或在最后重新解析它。)但是因为我不明白为什么你排除了 python 或 perl (它们基本的 shell 工具),也许你也不认为 awk 公平游戏......

相关内容