Estoy ejecutando Windows 7 y tengo GnuWin32. Tengo un archivo de texto de varios gigabytes con \n
finales de línea LF (). Quiero saber cuántas líneas tiene (o, alternativamente, cuántos LF tiene, que es, digamos, una menos, pero no me importa). ¿Cuál es la forma más rápida o menos costosa de obtener mi respuesta?
Algunas posibilidades (aunque estoy seguro de que me faltan algunas):
wc -l foo
grep -c $ foo
(con-c
, imprime solo el recuento de líneas coincidentes)grep -c ^^ foo
(el primer signo de intercalación escapa al segundo)sed -n $= foo
(-n
evita imprimir la línea;$
restringe a la última línea;=
imprime el número de línea)
(Esas son las utilidades GnuWin32. No conozco ninguna forma nativa de Windows).
Respuesta1
Solución de línea de comando de Windows
type foo | find "" /v /c
Soluciones PowerShell
(get-content foo | measure-object -line).lines
(dir foo | select-string .).count
(type foo).count
(gc foo | measure-object | select count).count
solución perla
perl -pe '}{$_=$.' foo
solución incorrecta
awk 'END { print NR }' foo
Otras lecturas
- Un índice AZ de la línea de comando CMD de Windows- Una excelente referencia para todo lo relacionado con la línea cmd de Windows.
- encontrar- Busque una cadena de texto en un archivo y muestre todas las líneas donde se encuentra.
- Un índice AZ de comandos de Windows PowerShell- Una excelente referencia para todo lo relacionado con PowerShell.
Respuesta2
La más rápida para mí es la línea de comando:find /v /c "" foo.txt
Todavía tengo que hacer una prueba comparativa adecuada, pero lo intenté type
con (get-content foo | measure-object -line)
un archivo de 10 GB en un servidor de RAM de 2 GB, pero tardaron demasiado en completarse. Encontrar sin embargo regresó lo suficientemente rápido