有没有强大的命令行工具来处理 csv 文件?

有没有强大的命令行工具来处理 csv 文件?

我使用 CSV 文件,有时需要从命令行快速检查行或列的内容。在很多情况下cut,、、、和朋友就可以完成这项工作headtail然而,cut 不能轻易处理诸如

"this, is the first entry", this is the second, 34.5

在这里,第一个逗号是第一个字段的一部分,但cut -d, -f1不同意。在我自己编写解决方案之前,我想知道是否有人知道已经存在适合这项工作的好工具。它至少必须能够处理上面的示例并从 CSV 格式的文件返回一列。其他理想的功能包括能够根据第一行中给出的列名称选择列、支持其他引用样式以及支持制表符分隔文件。

如果您不知道这样的工具,但有关于在 Bash、Perl 或 Python 或其他常见脚本语言中实现这样的程序的建议,我不会介意这样的建议。

答案1

我可能有点晚了,但还有另一个工具值得一提:csvkit

它有很多命令行工具,可以:

  • 重新格式化 CSV 文件,
  • 从各种格式(JSON、SQL、XLS)与 CSV 相互转换,
  • 相当于cutgrepsort其他,但支持 CSV,
  • 连接不同的 CSV 文件,
  • 对 CSV 文件中的数据执行一般 SQL 查询。

答案2

你可以使用Python的csv模块。

一个简单的例子:

import csv
reader = csv.reader(open("test.csv", "r"))
for row in reader:
    for col in row:
        print col

答案3

磨坊主是另一个用于操作基于名称的数据的好工具,包括 CSV(带标题)。要提取 CSV 文件的第一列,而不关心其名称,您可以执行类似的操作

printf '"first,column",second,third\n1,2,3\n' |
  mlr --csv -N cut -f 1

答案4

我会推荐xsv,一个“用 Rust 编写的快速 CSV 命令行工具包”。

撰写者瑞普格雷普的作者。

精选于我们如何使 CSV 处理速度加快 142 倍Reddit 主题)。

相关内容