shell:考虑到前面的uniq-c,有没有使用uniq-c的方法?

shell:考虑到前面的uniq-c,有没有使用uniq-c的方法?,shell,uniq,Shell,Uniq,我正在UNIX shell(OSX)中进行一些数据处理 在使用uniq-c并进行进一步的基于查找的处理后,我再次对数据进行排序,并且需要再次使用uniq-c,但请记住先前计数的结果(例如计数) 例如,如果输入数据如下所示: 36351 | 3 36351 | 2 36351 | 13 2914 | 1 2914 | 2 36351 | 18 2914 | 3 那么输出应该是这样的: 36351 | 3 36351 | 2 36351 | 13 2914 | 1 2914 | 2 36351

我正在UNIX shell(OSX)中进行一些数据处理

在使用
uniq-c
并进行进一步的基于查找的处理后,我再次对数据进行排序,并且需要再次使用
uniq-c
,但请记住先前计数的结果(例如计数)

例如,如果输入数据如下所示:

36351 | 3
36351 | 2
36351 | 13
2914 | 1
2914 | 2
36351 | 18
2914 | 3
那么输出应该是这样的:

36351 | 3
36351 | 2
36351 | 13
2914 | 1
2914 | 2
36351 | 18
2914 | 3
(字段的顺序并不重要。)


在shell中如何做到这一点?

我不知道如何让uniq来做这项工作,但使用awk非常简单:

    { c[$1] += $3; } 

END { for (s in c) printf("%s | %s\n", s, c[s]); }

我不知道有什么方法可以让uniq来做这项工作,但是对于awk来说,这是非常简单的:

    { c[$1] += $3; } 

END { for (s in c) printf("%s | %s\n", s, c[s]); }

我不知道有什么方法可以让uniq来做这项工作,但是对于awk来说,这是非常简单的:

    { c[$1] += $3; } 

END { for (s in c) printf("%s | %s\n", s, c[s]); }

我不知道有什么方法可以让uniq来做这项工作,但是对于awk来说,这是非常简单的:

    { c[$1] += $3; } 

END { for (s in c) printf("%s | %s\n", s, c[s]); }

如果一个键的值总是保证是相邻的,那么你也可以用很少的内存逃走;但是,除非你有绝对巨大的输入,否则这并不重要。如果一个键的值总是保证相邻的,那么你也可以用很少的内存离开;但是,除非你有绝对巨大的输入,否则这并不重要。如果一个键的值总是保证相邻的,那么你也可以用很少的内存离开;但是,除非你有绝对巨大的输入,否则这并不重要。如果一个键的值总是保证相邻的,那么你也可以用很少的内存离开;但除非你有绝对巨大的投入,否则这并不重要。