Estou executando o Windows 7 e tenho o GnuWin32. Eu tenho um arquivo de texto de vários gigabytes com \n
finais de linha LF (). Quero saber quantas linhas ele possui (ou alternativamente quantos LFs ele possui, o que é, digamos, um a menos, mas não me importa). Qual é a maneira mais rápida ou menos dispendiosa de obter minha resposta?
Algumas possibilidades (embora eu tenha certeza de que estou perdendo algumas):
wc -l foo
grep -c $ foo
(com-c
, imprime apenas a contagem de linhas correspondentes)grep -c ^^ foo
(o primeiro cursor escapa do segundo)sed -n $= foo
(-n
impede a impressão da linha;$
restringe à última linha;=
imprime o número da linha)
(Esses são os utilitários GnuWin32. Não conheço nenhuma maneira nativa do Windows.)
Responder1
Solução de linha de comando do Windows
type foo | find "" /v /c
Soluções Powershell
(get-content foo | measure-object -line).lines
(dir foo | select-string .).count
(type foo).count
(gc foo | measure-object | select count).count
solução perl
perl -pe '}{$_=$.' foo
solução errada
awk 'END { print NR }' foo
Leitura adicional
- Um índice AZ da linha de comando do Windows CMD- Uma excelente referência para todas as coisas relacionadas à linha cmd do Windows.
- encontrar- Procure uma string de texto em um arquivo e exiba todas as linhas onde ela for encontrada.
- Um índice AZ de comandos do Windows PowerShell- Uma excelente referência para todas as coisas relacionadas ao PowerShell.
Responder2
O mais rápido para mim é a linha de comando:find /v /c "" foo.txt
Ainda estou para fazer um benchmark adequado, mas tentei type
um (get-content foo | measure-object -line)
arquivo de 10 GB em um servidor de 2 GB de RAM, mas eles demoraram muito para serem concluídos. Encontre, no entanto, retornado rápido o suficiente