如何从具有成千上万行数据的多个CSV文件中读取数据并分别为每个文件计算数据并将其打印在一个csv文件中。这可能吗?
例如:
2个CSV文件的示例
example.csv
Fname Lname ID Online(Y/N) URL Address
John Doe 123 Y xyz.com NJ
Jane Doe 234 N abc.com CA
Jane Doe 234 Y abc.com CA
ex.csv
Fname Lname ID Online(Y/N) URL Address
John Doe 123 Y xyz.com NJ
Jane Doe 234 N abc.com CA
Jane Doe 234 Y abc.com CA
Jane Doe 234 Y abc.com CA
用于计算的条件:
Output.csv
Filename A B
example 1 2
ex 2 2
这样做的最佳方式是什么?
#!/bin/bash
OUTFILE = 'finalcount.csv'
CAT $1 | tr "," " " | tr -d '"' | tr -d "\t" | \ (Is this the best way to remove white space and , and etc from the input file?)
awk -F"|" 'NR>1 {$4=="Y" && $5=="*abc.com" && $6=="CA" ? a++ : b++}
END {print FILENAME,a,b}' *.csv
我应该对此代码进行哪些更改?
答案 0 :(得分:1)
由于您还没有提供任何代码,我会为单个文件提供解决方案,也许您可以为多个输入文件处理它
$ awk 'NR>1 { $4=="Y" && $5=="abc.com" && $6=="CA" ? a++ : b++ }
END{print FILENAME, a, b}' ex.csv
ex.csv 2 2
对于实际的csv输入,您需要使用-F,
选项将文件分隔符设置为逗号。跳过第一个标题行可以使用FNR
完成(提示您也可以使用它来检测输入文件更改)