我可以使用基本的 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 公平游戏......