bash - uso - linux buscar texto en varios ficheros
Contar las apariciones Ășnicas de un campo en varios archivos (1)
Usando GNU awk para ENDFILE
y length(array)
:
awk ''{unq[$3]} ENDFILE{print FILENAME, length(unq); delete unq}'' *.log
Con otras awks:
awk ''
!seen[FILENAME,$3]++ { unq[FILENAME]++ }
END { for (i=1;i<ARGC;i++) print ARGV[i], unq[ARGV[i]]+0 }
'' *.log
Tengo una gran colección de archivos de registro donde cada archivo contiene registros de la forma ...
2015-06-07 23:59:53 [uid:123] {success,1} .
Para cada archivo, quiero contar cuántos UID únicos están presentes.
Entonces en este fragmento de archivo vemos los uids 123 y 124 ...
2015-06-07 23:59:53 [uid:123] {success,1}
2015-06-07 23:59:53 [uid:123] {success,1}
2015-06-07 23:59:53 [uid:123] {success,1}
2015-06-07 23:59:53 [uid:124] {success,1}
entonces el resultado de mi conteo para este archivo sería 2 .
¿Cómo puedo obtener los datos usando bash y / o awk?
Lo intenté
cat 20150607.log | awk ''{print $3}'' | sort | uniq | wc -l
Esto funcionó bien, pero el problema es que tengo tantos archivos y no quiero ejecutar el comando anterior uno por uno.
¿Hay una manera más simple de obtener esta cuenta entre múltiples archivos?