質問: csvファイルを処理するための堅牢なコマンドラインツールはありますか? 私はcsvファイルを使用しており、コマンドラインから行または列の内容をすばやく確認する必要がある場合があります。多くの場合、cut、head、tail、および友人が仕事をします。ただし、カットは次のような状況には簡単に対処できません"this, is the first entry", this is the second, 34.5 ここでは、最初のコンマは最初のフィールドの一部ですが、cut -d, -f1同意しない。私が自分で解決策を書く前に、誰かがこの仕事のためにすでに存在する優れたツールを知っているかどうか疑問に思っていました。少なくとも、上記の例を処理し、csv形式のファイルから列を返すことができる必要があります。他の望ましい機能には、最初の行に指定された列名に基づいて列を選択する機能、他の引用スタイルのサポート、およびタブ区切りファイルのサポートが含まれます。そのようなツールを知らないが、bash、perl、python、またはその他の一般的なスクリプト言語でのそのようなプログラムの実装に関する提案があれば、私はそのような提案を気にしません。
回答: 最良のツールの1つはmiller( http://johnkerl.org/miller/doc/index.html )です。 csv、tsv、表形式のjsonなどの名前付きデータのawk、sed、cut、join、sortのようなものです。例ではecho '"this, is the first entry", this is the second, 34.5' | \ mlr --icsv --implicit-csv-header cat あなたにあげる1=this, is the first entry,2= this is the second,3= 34.5 tsvが必要な場合echo '"this, is the first entry", this is the second, 34.5' | \ mlr --c2t --implicit-csv-header cat (ヘッダーを削除することは可能です)1 2 3 this, is the first entry this is the second 34.5 1列目と3列目が必要な場合は、それらの順序を変更しますecho '"this, is the first entry", this is the second, 34.5' | \ mlr --csv --implicit-csv-header --headerless-csv-output cut -o -f 3,1 あなたにあげる 34.5,"this, is the first entry"