日期:2014-05-17  浏览次数:21064 次

linux 处理csv文件
tmp.csv文件的内容:

类别 字段1 字段2 字段3 字段4
张 张王 100 job pm
李 李娜 200 sals am
文 小文 200 depart sa
张 张王 120 mana noll
文 小文 210 mini price
品 钱品 99 enigma best
李 李娜 190 foot very



现在我想把与”张王“ 有关的数据放在 tmp1.csv文件中,第一列的类别不要显示,处理后的csv数据位下面的
字段1 字段2 字段3 字段4
张王 100 job pm
张王 120 mana noll


现在我想把与”李娜“ 有关的数据放在 tmp2.csv文件中
字段1 字段2 字段3 字段4
李娜 200 sals am
李娜 190 foot very




现在我想把与”小文“ 有关的数据放在 tmp3.csv文件中
字段1 字段2 字段3 字段4
小文 210 mini price
小文 200 depart sa




现在我想把与”钱品“ 有关的数据放在 tmp4.csv文件中
钱品 99 enigma best




请问下我该如何处理源tmp.csv文件,我想了好多种,但最终都不是我要的结果,,谢谢各位了!!!!!!!!!!

------解决方案--------------------
这个用AWK +SED就能处理了
GOOGLE AWK分组 即可
------解决方案--------------------
用awk就行了。
例如

Perl code
nawk '$2=="张王" {print $2, $3, $4, $5}' tmp.csv > tmp1.csv

------解决方案--------------------
$1,$2,$3...表示字段1,字段2,字段3...
因此只要一点小改动即可

nawk '$1=="张" {print $2, $3, $4, $5}' tmp.csv > test1.csv
nawk '$1=="文" {print $2, $3, $4, $5}' tmp.csv > test2.csv

如果你要想做成自动提取第一个字段的类别,然后分别输出文件,
就比较复杂,要写个awk脚本才能做到。
awk十分强大,有时间LZ不妨学习下。