Cómo get el número total de líneas y conteos únicos en la misma línea

Tengo un file (test.csv) que contiene las siguientes líneas:

2016-08-23 00:00:00,270113184103681474 2016-08-23 00:00:00,270113184101689340 2016-08-23 00:00:00,270113184103681474 2016-08-23 00:00:00,270113184101689340 2016-08-23 01:00:00,270113184103681474 2016-08-23 01:00:00,270113184101689340 

Me gustaría get el número total de líneas y las ocurrencias únicas de la 2da columna para cada una de las 1ras columnas. El resultado deseado para las líneas anteriores sería:

 2016-08-23 00:00:00, 4, 2 2016-08-23 01:00:00, 2, 2 

¿Hay una solución grep / awk simple para esto?

La solución ingenua es solo contar cada aparición y seguimiento para ver si lo hemos visto antes.

Asi que:

 awk -F, '{ t[$1]++; seen[$0]++; if (seen[$0] == 1) { u[$1]++ } } END { for (a in t) { print a "," t[a] "," u[a] } }' 

La primera línea hará un seguimiento de la cantidad total de veces que se ha producido la date en t . Seguirá la cantidad de veces que vimos cada línea, y si es la primera vez que la vemos, sabemos que es única y la contabilizamos.

La segunda línea iterará a través de los resultados y los imprimirá.

Si puedes recurrir a GNU awk

 awk -F, '{a[$1]++; b[$1][$2]}; END{for (k in a) printf "%s,%d,%d\n", k, a[k], length(b[k])}' test.csv