Bazı değerlerin ancak tüm ayıklanan bir CSV dosyası ayrıştırmak

1 Cevap php

İyi günler,

I have a local csv file with values that change daily called DailyValues.csv
I need to extract the value field of category2 and category4.
Then combine, sort and remove duplicates (if any) from the extracted values.
Then save it to a new local file NewValues.txt.

Burada DailyValues.csv dosyasının bir örneğidir:

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

I http://www.php.net/manual/en/function.fgetcsv.php bazı yararlı ayrıştırma örnekleri buldu ve değeri sütunun tüm değerlerini ayıklamak için ama sonra sıralama ve temiz yinelenen Category2 / 4 değerlerini ayıklamak sadece kısıtlamak için nasıl bilmiyorum başardınız .

Çözüm php, perl veya kabuk komut olması gerekir.

Any help would be much appreciated.
Thank you in advance.

1 Cevap

Burada bir kabuk çözümdür.

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

Ben sadece kesim için f anahtarı çıkarmak istediğiniz sütunları, seçer beri, yalnızca belirli sütunları ayıklamak olduğunu göstermek için cut komutu kullanılır.

Tür için u anahtarı çıktı benzersiz olması için yapar.

Edit: It's important that you use egrep and not grep, since grep uses a somewhat restricted regular expression set, and egrep has somewhat further facilities

(Sadece grep insanlar için) edit:

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

Bu oldukça büyük bir yükü üretiyor ama hala çalışıyor ...