Разобрать файл CSV, извлекать некоторые значения, но не все
Вопрос
Добрый день,
У меня есть локальный файл 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
Это производит довольно накладную, но все еще работает ...