问题标签 [miller]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
50 浏览

miller - 如何使用 Miller 命令行工具将大型 CSV 文件拆分为多个 JSON 文件?

我目前正在使用这个Miller命令将 CSV 文件转换为 JSON 数组文件:

mlr --icsv --ojson --jlistwrap cat sample.csv > sample.json

它工作正常,但 JSON 数组太大。

Miller 能否将输出拆分为许多较小的 JSONX行文件?

例如,如果原始 CSV 有 100 行,我可以修改命令以输出 10 个 JSON 数组文件,每个 JSON 数组包含 10 个转换后的 CSV 行吗?

如果每个 JSON 数组也可以像这样包装,则可以加分:

0 投票
1 回答
115 浏览

bash - 1)基于另一个文件头重新排序一个 csv 文件和 2)将一个 csv 文件的一列合并到另一列并删除重复

我有两个 csv 文件。两个文件可能具有相同或不同的数据。File2 只有文件 1 中的几列。文件 2 中的某些列可能有不同的标题。例如,文件 2 用名称代替了名字

文件 2

问题 1: 我想重新排序 csv 文件 2 中的列,以根据标题匹配 csv 文件 1 中的顺序。

根据文件 1 排序的所需输出标头

问题 2: 根据标题删除重复项将 File2 列合并到文件 1 例如,如果 First Name 、 Last Name、 Department 列相同,则那些重复项删除那些重复项。其他列可能相同也可能不同。 因此希望实现基于条件的重复记录删除

问题 3: 将文件 2 转换为文件 1 模板按顺序添加缺失的列。最后根据某些标题比较和删除重复的列。例如。如果名字、姓氏和密码相同,则它们是重复的,其他列可能相同或不同。

问题 4: 将特定列从文件 2 复制到文件 1 保留顺序 例如。文件 2 有名称列 将该列替换为文件 1 的名字列

试过:

以上答案来自https://unix.stackexchange.com/questions/674038/replace-a-column-value-in-csv-file-from-another-file

以上似乎工作。但它需要将第 numbet 列指定为 $5 和 $2。任何人都可以帮助修改上述命令以指定标题而不是列号

试过了

不工作

0 投票
1 回答
45 浏览

json - 有没有一种简单的方法可以使用 Miller 将具有 0 索引路径的 CSV 作为 JSON 的键转换为 JSON?

考虑以下 CSV:

您可以使用Miller轻松地将其转换为 JSON(考虑到键定义的路径):

现在,如果路径在 CSV 中索引为 0(这肯定更常见):

然后,在没有字段名称的先验知识的情况下,您将不得不重写整个转换:

编辑:/FLATSEP内置变量替换硬编码:

我想知道我是否遗漏了一些明显的东西,比如命令行选项或用put动词重命名字段的方法,或者其他什么?也欢迎您对前面的代码提供您的见解,因为我对我的 Miller 的编程技能并不十分自信。


更新:

使用 @aborruso预处理 CSV 标头的方法,这可以简化为:注意
我没有保留该regextract部分,因为这意味着提前知道 CSV 标头。

即使有诸如使用rename动词(当您提前知道标头时)或预处理 CSV 标头之类的解决方法,我仍然希望米勒的作者可以添加一个额外的命令行选项来处理这种0-indexed外部数据;在某些情况下,添加(and ) 之DSL类的函数也可能很有用。arrayify0flatten0