0

良い一日、

DailyValues.csvと呼ばれる毎日変化する値を持つローカルcsvファイルがあります。category2
とcategory4の値フィールドを抽出する必要があります。
次に、抽出された値から重複(存在する場合)を結合、並べ替え、削除します。
次に、それを新しいローカルファイル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、またはシェルスクリプトである必要があります。

どんな助けでも大歓迎です。
前もって感謝します。

4

1 に答える 1

0

これがシェルスクリプトソリューションです。

egrep 'category4|category2' input.file | cut -d"," -f1,3 | sort -u > output.file

カットcutのスイッチが抽出する列を選択するため、特定の列のみを抽出できることを示すためだけにコマンドを使用しました。f

uソート用のスイッチにより、出力が一意になります。

編集:やや制限された正規表現セットを使用し、egrepにはさらに機能があるため、ではegrepなくを使用することが重要です。grepgrep

編集(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

それはかなりのオーバーヘッドを生み出しますが、それでも機能します...

于 2010-05-19T04:18:08.783 に答える