varias - mostrar numero de lineas de un archivo linux
¿Cómo contar líneas en un documento? (19)
Tengo líneas como estas, y quiero saber cuántas líneas tengo realmente ...
09:16:39 AM all 2.00 0.00 4.00 0.00 0.00 0.00 0.00 0.00 94.00
09:16:40 AM all 5.00 0.00 0.00 4.00 0.00 0.00 0.00 0.00 91.00
09:16:41 AM all 0.00 0.00 4.00 0.00 0.00 0.00 0.00 0.00 96.00
09:16:42 AM all 3.00 0.00 1.00 0.00 0.00 0.00 0.00 0.00 96.00
09:16:43 AM all 0.00 0.00 1.00 0.00 1.00 0.00 0.00 0.00 98.00
09:16:44 AM all 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
09:16:45 AM all 2.00 0.00 6.00 0.00 0.00 0.00 0.00 0.00 92.00
¿Hay alguna manera de contarlos todos usando comandos de linux?
Acabo de hacer un programa para hacer esto (con node
)
npm install gimme-lines
gimme-lines verbose --exclude=node_modules,public,vendor --exclude_extensions=html
Como han dicho otros, wc -l
es la mejor solución, pero para futuras referencias puede usar Perl:
perl -lne ''END { print $. }''
$.
contiene el número de línea y el bloque END
se ejecutará al final de la secuencia de comandos.
He estado usando esto:
cat myfile.txt | wc -l
Lo prefiero a la respuesta aceptada porque no imprime el nombre del archivo, y no tienes que usar awk
para solucionarlo. Respuesta aceptada:
wc -l myfile.txt
Pero creo que la mejor es la respuesta de GGB667:
wc -l < myfile.txt
Probablemente usaré eso de ahora en adelante. Es un poco más corto que mi camino. Estoy poniendo mi vieja forma de hacerlo en caso de que alguien lo prefiera. La salida es la misma con esos dos métodos.
La herramienta wc
es el "contador de palabras" en sistemas operativos UNIX y similares a UNIX, también puede usarla para contar líneas en un archivo, agregando la opción -l
, por lo que wc -l foo
contará el número de líneas en foo
. También puede canalizar la salida de un programa como este: ls -l | wc -l
ls -l | wc -l
, que le dirá cuántos archivos hay en el directorio actual.
La redirección / canalización de la salida del archivo a wc -l
debería ser suficiente, como la siguiente:
cat /etc/fstab | wc -l
que luego proporcionaría el no. Sólo de líneas.
Los anteriores son el método preferido, pero el comando "cat" también puede ser útil:
cat -n <filename>
Le mostrará todo el contenido del archivo con los números de línea.
O cuente todas las líneas en subdirectorios con un patrón de nombre de archivo (por ejemplo, archivos de registro con marcas de tiempo en el nombre de archivo):
wc -l ./**/*_SuccessLog.csv
Para contar todas las líneas usa:
$ wc -l file
Para filtrar y contar solo líneas con patrón use:
$ grep -w "pattern" -c file
O usa -v para invertir el partido:
$ grep -w "pattern" -c -v file
Consulte la página de manual de grep para ver los argumentos -e, -i y -x ...
Sé que esto es viejo pero aún así: cuenta las líneas filtradas
Mi archivo se ve como:
Number of files sent
Company 1 file: foo.pdf OK
Company 1 file: foo.csv OK
Company 1 file: foo.msg OK
Company 2 file: foo.pdf OK
Company 2 file: foo.csv OK
Company 2 file: foo.msg Error
Company 3 file: foo.pdf OK
Company 3 file: foo.csv OK
Company 3 file: foo.msg Error
Company 4 file: foo.pdf OK
Company 4 file: foo.csv OK
Company 4 file: foo.msg Error
Si quiero saber cuántos archivos se envían OK:
grep "OK" <filename> | wc -l
O
grep -c "OK" filename
Si desea verificar la línea total de todos los archivos en un directorio, puede usar find y wc:
find . -type f -exec wc -l {} +
Si todo lo que desea es el número de líneas (y no el número de líneas y el nombre del archivo estúpido que vuelve):
wc -l < /filepath/filename.ext
Como se mencionó anteriormente, estos también funcionan (pero son inferiores por otras razones):
awk ''END{print NR}'' file # not on all unixes
sed -n ''$='' file # (GNU sed) also not on all unixes
grep -c ".*" file # overkill and probably also slower
Utilice nl
así:
nl filename
Del man nl
:
Escriba cada ARCHIVO en la salida estándar, con números de línea agregados. Sin ARCHIVO, o cuando ARCHIVO es -, lea la entrada estándar.
Utilice wc
:
wc -l <filename>
Utilice wc
:
wc -l <filename>
Esto dará como resultado el número de líneas en <filename>
:
$ wc -l /dir/file.txt
3272485 /dir/file.txt
O, para omitir el <filename>
del resultado, use wc -l < <filename>
:
$ wc -l < /dir/file.txt
3272485
También puede canalizar datos a wc
también:
$ cat /dir/file.txt | wc -l
3272485
$ curl yahoo.com --silent | wc -l
63
Vi esta pregunta mientras buscaba una forma de contar varias líneas de archivos, así que si quieres contar varias líneas de archivos de un archivo .txt, puedes hacer esto.
cat *.txt | wc -l
también se ejecutará en un archivo .txt;)
hay muchas maneras. el uso de wc
es uno.
wc -l file
otros incluyen
awk ''END{print NR}'' file
sed -n ''$='' file
(GNU sed)
grep -c ".*" file
cat file.log | wc -l | grep -oE ''/d+''
-
grep -oE ''/d+''
: para devolver SOLAMENTE los números de dígitos.
wc -l <file.txt>
O
command | wc -l
wc -l file.txt | cut -f3 -d" "
Sólo devuelve el número de líneas