java - 根据Java中的字段拆分csv

标签 java linux csv split

我想根据最后一个“字段”拆分一个csv文件。 例如 csv 文件包含:

a,1
b,2
c,3
d,1

数字表示类别。

这个文件应该根据编号(resp. categories)拆分成单独的文件,以便存在三个文件。

第一个文件:

a,1
d,1

第二个文件:

b,2

第三个文件:

c,3

贪婪的方法是每行读取 csv,将字符串拆分为“,”并分隔最后一个元素(这里是数字)。之后我可以检查当前行的编号并将其放入 FileWriter。 但是:我不知道会有多少类别,因为我想保持系统的可扩展性。因此,所需的 FileWriters 数量是未知的。

作为替代方案,我可以阅读每个类别的完整 csv 文件。在第一次迭代中,只有类别“1”的行将被处理并写入“1.csv”,在第二步中只有类别“2”的行进入“2.csv”,依此类推。 但是:这意味着文件必须被读取的次数与类别存在的次数一样多,这可能非常频繁。

您是否知道为此目的是否有一个优雅的解决方案?

我也很欣赏基于 linux 的解决方案!也许没有必要创建 Java 程序? 我想 awk 可能是首选工具?

感谢您的帮助!

最佳答案

试试这个 awk 单行代码:

awk -F, '{print >> "output"$NF".csv"}' input.csv

它会读取每一行,并根据该行最后一个字段的值将其写入适当的输出 csv 文件。

关于java - 根据Java中的字段拆分csv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18574306/

相关文章:

java - Java 中非常基本的终端

从 Linux 编译到 Windows

c++ - gcc 编译器报告类的大小=零

java - 输出时出现数字格式异常错误

java - 文本/csv文件下载在百行时转换为文本/纯文本

java - 为什么 Java 中的大多数字符串操作都基于正则表达式?

Java Web Start 间歇性 JAR 不更新

java - 从链表中删除节点

linux - shell脚本无法在eclipse che中创建工作区

r - 导入 csv 文件时列数错误