我有如下数据:
1493992429103289,207.55,207.5
1493992429103559,207.55,207.5
1493992429104353,207.55,207.5
1493992429104491,207.6,207.55
1493992429110551,207.55,207.5
由于最后两列的性质,它们的值全天都会变化,并且会定期重复其值。通过将所需输出中概述的方式进行分组(如下所示),我能够查看其值每次发生变化的时间(第一列中的enoch时间)。有没有一种方法可以实现如下所示的所需输出:
1493992429103289,207.55,207.5
1493992429104491,207.6,207.55
1493992429110551,207.55,207.5
因此,我通过后两列合并数据。但是,合并并不是完全唯一的(如207.55和207.5重复所示)
我试过了:
uniq -f 1
但是,输出仅给出第一行,并且不会遍历列表
下面的awk解决方案不允许再次输出先前发生的事件,因此提供了输出(在awk代码下方):
awk '!x[$2 $3]++'
1493992429103289,207.55,207.5
1493992429104491,207.6,207.55
我不希望按后两列对数据进行排序。但是,由于第一时间是纪元时间,因此可以按第一列进行排序。
最佳答案
您不能使用uniq
设置分隔符,它必须为空白。借助tr
,您可以
tr ',' ' ' <file | uniq -f1 | tr ' ' ','
1493992429103289,207.55,207.5
1493992429104491,207.6,207.55
1493992429110551,207.55,207.5