我有一个这样的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
型
3条答案
按热度按时间icnyk63a1#
你可以使用这个awk:
字符串
cgvd09ve2#
这对我很有效:
字符串
说明:
1.为了可读性,将变量“test”设置为逗号分隔的字符串。
1.使用tr命令将逗号改为换行符。
1.使用“sort -u”删除重复项.
1.使用“grep”删除多余的空白行。
1.使用tr命令将换行符改回逗号。
这可能不像其他方法那样优雅或快速,但对我来说更容易理解。
bkhjykvo3#
另一种方法来实现相同的
将逗号改为新行
字符串
使用sort -u删除重复行
型
最后将新行替换回逗号
型