我有一个像这样的csv文件:(名为test2.csv)
lastname,firstname,83494989,1997-05-20,2015-05-07 15:30:43,Sentence Skills 104,Sentence Skills 104,Elementary Algebra 38,Elementary Algebra 38,Sentence Skills 104,Sentence Skills 104,Elementary Algebra 38,Elementary Algebra 38,
我想删除重复的条目
我最接近的是以下awk命令
awk '{a[$0]++} END {for (i in a) print RS i}' RS="," test2.csv
它可以工作,但会导致新问题,它会使值无序并将它们放在如下的行中:
,Elementary Algebra 38
,2015-05-07 15:30:43
,Sentence Skills 104
,FirstName
,LastName
,1997-05-20
,83494989
我需要保留他们的订单并将它们保持在一行(我可以解决行问题,但不知道如何解决订单问题)
使用解决方案进行更新:
anubhava的回答非常好,我添加了一个关于删除约会时间的问题,Ed Morton帮忙解决了这个问题,这里是完整的查询
awk 'BEGIN{RS=ORS=","} {sub(/ ..:..:..$/,"")} !seen[$0]++' test2.csv
答案 0 :(得分:7)
你可以使用这个awk:
awk 'BEGIN{RS=ORS=","} !seen[$0]++' test2.csv
lastname,firstname,83494989,1997-05-20,2015-05-07 15:30:43,Sentence Skills 104,Elementary Algebra 38,
答案 1 :(得分:0)
实现相同的另一种方式
将逗号更改为新行
sed -e 's/,/\n/g'
使用sort -u
删除重复的行sed -e 's/,/\n/g' | sort -u
最后将新行换回逗号
sed -e 's/,/\n/g' | sort -u | 's/\n/,/g'