【发布时间】:2019-03-15 17:31:17
【问题描述】:
我想加入 500 个 csv 文件
我先解释一下 csv 格式,每个 csv 文件都命名为 log-yyyy-mm-dd.hh:mm:ss.csv
其结构没有列标题
eventID,number
例如
FLAGS-2,16
DOOR6-234,800
我想像这样格式化这些数据
eventID,filename,filename,filename ---and so on for the 500+ files
eventID,log-2019-03-10.21:00:01.csv,log-2019-03-15.12:00:01.csv
FLAGS-2,16,54
FLAGS-3,16,9
我首先考虑使用 bash 和 awk 来做这件事,但当我发现偶尔如果数据没有记录在文件中时,我就放弃了。它不存储该 eventID 的数字
当我做find . -name '*.csv' | xargs wc -l
有些文件有 7803 行有些有 7800 等等
所以在一个文件中我可以有以下内容
FLAGS-2,16
FLAGS-3,19
FLAGS-4,02
还有下一个
FLAGS-2,16
FLAGS-4,02
下一个最好的方法是什么
谢谢
【问题讨论】:
-
您真的想在
Bash中执行此操作吗?我会推荐像Python这样的脚本语言 -
可以使用
join加入文件,但我建议不要这样做,因为join一次只能处理两个文件。您必须拨打join500 次。awk脚本应该相对较快地完成任务。 -
环境有限,它只是一个路由器,路由器需要在周末将日志放在一起并通过smtp发送数据。我无法安装python