Разобрать файл CSV, извлекать некоторые значения, но не все

StackOverflow https://stackoverflow.com/questions/2862806

  •  30-09-2019
  •  | 
  •  

Вопрос

Добрый день,

У меня есть локальный файл CSV со значениями, которые меняются ежедневно, называется DailyValues.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.ftetcsv.php. И удалось извлечь все значения колонки значений, но не знают, как ограничить его извлечь только значения категории2 / 4, затем сортировать и чистить дубликат.

Решение должно быть в PHP, Perl или Shell Script.

Любая помощь приветствуется.
Заранее спасибо.

Это было полезно?

Решение

Вот решение скрипта Shell.

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

Я использовал cut Команда просто чтобы показать вам, что вы можете извлечь только определенные столбцы только, поскольку f Переключатель для выбора выбора, какие столбцы вы хотите извлечь.

То u Переключатель для сорта делает вывод уникальным.

Редактировать: важно, чтобы вы использовали egrep и не grep, поскольку grep использует несколько ограниченных регулярных выражений, и Exep имеет несколько дополнительных средств

Редактировать (для людей, которые имеются только Gree):

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

Это производит довольно накладную, но все еще работает ...

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top