com.mysql.jdbc.MysqlDataTruncation: Data truncation: Out of range value for column 'current_state' at r:1
com.mysql.jdbc.MysqlDataTruncation: Data truncation: Out of range value for column 'current_state' at r:2
com.mysql.jdbc.MysqlDataTruncation: Data truncation: Out of range value for column 'current_state' at r:5
java.lang.NullPointerException:12
java.lang.NullPointerException:7
java.lang.NullPointerException:18
java.lang.NullPointerException:2
Como puede ver, tengo 3 errores de MySQL duplicados y su frecuencia aparece al final. En el primer error aparece 1, en el segundo error aparece 2 y en la tercera vez aparece 5. Quiero que el script permanezca en una línea duplicada con la suma. Haciendo lo mismo con los errores de Java.
Rendimiento esperado:
com.mysql.jdbc.MysqlDataTruncation: Data truncation: Out of range value for column 'current_state' at r:8
java.lang.NullPointerException:39
Respuesta1
awk 'BEGIN{ FS=OFS=":" }
{ freq=$NF; sub(/:[^:]*$/, ""); seen[$0]+=freq }
END{ for (x in seen) print x, seen[x] }' infile
FS es el separador de campo de entrada y OFS es el separador de campo de salida; ambos fijamos dos puntos; luego tomamos el último campo $NF
en una variable temporal freq
y luego eliminamos el último campo del registro de entrada actual $0
usando la función sub().
Al hacerlo, seen[$0]+=freq
estamos resumiendo las mismas líneas de registro (el último campo ya está excluido) en el valor del último campo como su frecuencia que mantenemos en la freq
variable anteriormente.
luego, al FINAL, recorremos la matriz e imprimimos las líneas seguidas de su frecuencia total.