Command-Line

是否有用於處理 csv 文件的強大命令行工具?

  • February 1, 2022

我使用 CSV 文件,有時需要從命令行快速檢查行或列的內容。在很多情況下cutheadtail、 和朋友會做這項工作;但是,cut 不能輕易處理諸如

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

在這裡,第一個逗號是第一個欄位的一部分,但cut -d, -f1不同意。在我自己編寫解決方案之前,我想知道是否有人知道已經存在用於這項工作的好工具。它至少必須能夠處理上面的範例並從 CSV 格式的文件中返回一列。其他理想的功能包括根據第一行中給出的列名選擇列的能力,支持其他引用樣式和支持製表符分隔的文件。

如果您不知道這樣的工具,但對用 Bash、Perl 或 Python 或其他常見腳本語言實現這樣的程序有建議,我不介意這樣的建議。

您可以使用 Python 的csv模組。

一個簡單的例子:

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

我可能有點太晚了,但是還有另一個值得一提的工具:csvkit

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

  • 重新格式化 CSV 文件,
  • 從各種格式(JSON、SQL、XLS)與 CSV 相互轉換,
  • 等價於cut、和其他grepsort但支持 CSV,
  • 加入不同的 CSV 文件,
  • 對 CSV 文件中的數據執行一般 SQL 查詢。

引用自:https://unix.stackexchange.com/questions/7425