美好的一天,
我有一个本地csv文件,其值每天都会更改,名为DailyValues.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或shell脚本。
非常感谢任何帮助 提前谢谢。
答案 0 :(得分:0)
这是一个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
它产生了相当大的开销,但仍有效......