CSVファイルを扱うとき、内容を把握したちするときは Jupyter Notebook を使うと便利なのですが、ターミナルでの作業は中心であるときは、そのためだけに Jupyter Notebook の環境を整えたり、起動するのは少し面倒です。コマンドラインでCSVファイルを簡単に解析することができるようなツールがあればと思うことがありませんか?
この資料はそうしたときに非常に便利な xsv について使用方法を説明しています。
xsv はCSVファイルの加工、分析を高速に処理することができるRustで実装されたツールです。
GitHub - BurntSushi/xsv: A fast CSV command line toolkit written in Rust.
xsv のインストールは cargo を使って行います。
% cargo install xsv
ヘルプメッセージは xsv --help
と実行すると参照することができます。
% xsv --help
Usage:
xsv <command> [<args>...]
xsv [options]
Options:
--list List all commands available.
-h, --help Display this message
<command> -h Display the command help message
--version Print version info and exit
Commands:
cat Concatenate by row or column
count Count records
fixlengths Makes all records have same length
flatten Show one field per line
fmt Format CSV output (change field delimiter)
frequency Show frequency tables
headers Show header names
help Show this usage message.
index Create CSV index for faster access
input Read CSV data with special quoting rules
join Join CSV files
sample Randomly sample CSV data
search Search CSV data with regexes
select Select columns from CSV
slice Slice records from CSV
sort Sort CSV data
split Split CSV data into many files
stats Compute basic statistics
table Align CSV data into columns
xsv には次のサブコマンドがあります。
cat - CSVファイルを行または列ごとに連結する
count - CSVファイルの行を数える。(インデックスがあれば即座に返す)
fixlengths - CSVファイルのレコードをパディングまたは切り捨てて、同じ長さのレコードを持つように強制する
flatten - CSVのレコードを平らにして表示する
% xsv slice -i 5 data.csv | xsv flatten
fmt - CSVデータを異なるデリミタ、レコード・ターミネータ、クォート・ルールで再フォーマットする。 ASCII区切りデータもサポート
frequency - CSVデータの各列の頻度表を作成する。 インデックスがある場合は並列処理で高速化される
headers - CSVデータのヘッダ、または多数のCSVファイル間のヘッダーの交点を表示する