私はCSVファイルで作業し、時にはコマンドラインで行または列の内容をすばやく確認する必要があります。ほとんどの場合cut
、、、、および友達は仕事をしますが、head
カットtail
は次の作業を簡単に処理できません。
"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に変換し、
cut
その他grep
は同じですsort
が、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(ヘッダーを含む)を含む名前ベースのデータを操作するためのもう1つの素晴らしいツールです。名前を気にせずにCSVファイルの最初の列を抽出するには、次のようにします。
printf '"first,column",second,third\n1,2,3\n' |
mlr --csv -N cut -f 1