すべてではなく、値の一部を抽出するCSVファイルを解析する
質問
良い一日、
DailyValues.csvと呼ばれる毎日を変更する値を持つローカルCSVファイルがあります
カテゴリ2とカテゴリ4の値フィールドを抽出する必要があります。
次に、抽出された値から複製(もしあれば)を組み合わせ、並べ替え、削除します。
次に、新しいローカルファイルnewValues.txtに保存します。
これがDailyValues.csvファイルの例です。
category,date,value
category1,2010-05-18,value01
category1,2010-05-18,value02
category1,2010-05-18,value03
category1,2010-05-18,value04
category1,2010-05-18,value05
category1,2010-05-18,value06
category1,2010-05-18,value07
category2,2010-05-18,value08
category2,2010-05-18,value09
category2,2010-05-18,value10
category2,2010-05-18,value11
category2,2010-05-18,value12
category2,2010-05-18,value13
category2,2010-05-18,value14
category2,2010-05-18,value30
category3,2010-05-18,value16
category3,2010-05-18,value17
category3,2010-05-18,value18
category3,2010-05-18,value19
category3,2010-05-18,value20
category3,2010-05-18,value21
category3,2010-05-18,value22
category3,2010-05-18,value23
category3,2010-05-18,value24
category4,2010-05-18,value25
category4,2010-05-18,value26
category4,2010-05-18,value10
category4,2010-05-18,value28
category4,2010-05-18,value11
category4,2010-05-18,value30
category2,2010-05-18,value31
category2,2010-05-18,value32
category2,2010-05-18,value33
category2,2010-05-18,value34
category2,2010-05-18,value35
category2,2010-05-18,value07
私はいくつかの役立つ解析の例を見つけました http://www.php.net/manual/en/function.fgetcsv.php 値列のすべての値を抽出することができましたが、Category2/4の値を抽出してから並べ替えて複製を削除するように制限する方法がわかりません。
ソリューションは、PHP、Perl、またはShellスクリプトである必要があります。
どんな助けも大歓迎です。
前もって感謝します。
解決
これがシェルスクリプトソリューションです。
egrep 'category4|category2' input.file | cut -d"," -f1,3 | sort -u > output.file
私は使用しました cut
特定の列のみを抽出できることを示すためだけにコマンド f
カット用のスイッチは、抽出する列を選択します。
u
ソート用のスイッチにより、出力が一意になります。
編集:使用することが重要です egrep
そしてそうではありません grep
, 、 以来 grep
多少制限された正規表現セットを使用し、EGREPにはややさらなる施設があります
編集(GREPのみが利用可能な人向け):
grep 'category2' input.file > temp.file && grep 'category4' input.file >> temp.file && cut temp.file -d"," -f1,3 | sort -u > output.file && rm temp.file
かなり頭上を生成しますが、それでも機能します...
所属していません StackOverflow