我有一个像这样的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,
Run Code Online (Sandbox Code Playgroud)
我想删除重复的条目
我最接近的是以下awk命令
awk '{a[$0]++} END {for (i in a) print RS i}' RS="," test2.csv
Run Code Online (Sandbox Code Playgroud)
它可以工作,但会导致新的问题,它会将值排除在外,并将它们放在如下的行中:
,Elementary Algebra 38
,2015-05-07 15:30:43
,Sentence Skills 104
,FirstName
,LastName
,1997-05-20
,83494989
Run Code Online (Sandbox Code Playgroud)
我需要保持他们的订单并将它们保持在一行(我可以解决行问题,但不知道如何解决订单问题)
更新解决方案:
anubhava的答案很有效,我添加了一个关于从日期中删除时间的问题,Ed Morton帮忙解决了这个问题,这里是完整的查询
awk 'BEGIN{RS=ORS=","} {sub(/ ..:..:..$/,"")} !seen[$0]++' test2.csv
Run Code Online (Sandbox Code Playgroud)
你可以使用这个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,
Run Code Online (Sandbox Code Playgroud)