varios uso una todos texto sobre palabra los filtrar ficheros como buscar avanzado archivos archivo bash awk

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?