Tengo un archivo que contiene alrededor de millones de líneas. En las líneas tengo un campo llamado transactionid
, que tiene valores repetitivos. Lo que necesito hacer es contarlos claramente.
No importa cuántas veces se repita un valor, debe contarse solo una vez.
text-processing
awk
Olgun Kaya
fuente
fuente
... No matter of how many times a value is repeated, it should be counted as 1. ...
cat <file_name> | awk -F"|" '{if ((substr($2,0,8)=='20120110')) print $28}' | sort -u | wc -l
la cláusula if era para otra verificación de fecha, ya que parece obvio :)Respuestas:
OK, suponiendo que su archivo es un archivo de texto, que tiene los campos separados por un separador de coma ','. También sabría qué campo
'transactionid'
está en términos de su posición. Suponiendo que su'transactionid'
campo es el séptimo campo.Esto contaría las ocurrencias distintas / únicas en el séptimo campo e imprime el resultado.
fuente
sort
antes deluniq
comando?uniq
eliminar los registros que necesitan estar uno al lado del otro.Quizás no sea el método más elegante, pero esto debería funcionar:
donde
$1
es el número correspondiente al campo a analizar.fuente
No es necesario ordenar el archivo ... (
uniq
requiere que el archivo esté ordenado)Este script awk asume que el campo es el primer campo delimitado por espacios en blanco.
fuente
sort
implementaciones están diseñadas para hacer frente a grandes archivos.