2011-02-25 23 views
13

quiero contar todos los registros de una tabla a través de awk pero NR impresiones de registro de los números de todos los registros no el recuento total. Incluso he intentado:usando awk para contar ninguno de los registros

NF==4,count++{print count} 

Pero no su trabajo adecuadamente ¿Cómo puedo hacerlo a través de awk?

Respuesta

26

favor mostrar una muestra de su archivo y lo que quiere hacer con él (mostrar la salida deseada) la próxima vez. Adivinando lo que quiere,

awk 'NF==4{count++} END {print count}' file 

NR indica el número total de registros.

awk 'END{print NR}' file1 file2 

el número total de registros actualmente se denota por FNR.

awk 'END{print FNR}' file 
+1

+1 Sus últimos comando imprime el número de registros en el último archivo de un grupo de archivos (o solo archivo para un archivo). Usaría 'NR' para que los resultados no sean potencialmente confusos. Si desea recuentos por archivo: 'awk 'FILENAME! = Prevfn {print prevfn, prevc} {prevfn = FILENAME; prevc = FNR} END {print prevfn, prevc} 'archivo * ' –

11

Supongo que quiere decir el número total de líneas. En general, debe usar wc -l <filename> para esto. Si quieres hacer esto usando awk, utilice

awk '{print NR}' | tail -1 

Si sólo desea usar awk, hace

awk 'BEGIN{i=0}{i++;}END{print i}' <filename> 
+0

' wc -l [archivo] 'muestra el número de nuevas líneas, no el número de líneas. Informará un número un poco más pequeño que el número real de líneas. @kurumi tiene razón. –

Cuestiones relacionadas