我有如下数据:

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

08-18 02:04