Conte linhas rapidamente

2

Estou executando o Windows 7 e tenho o GnuWin32. Eu tenho um arquivo de texto de vários gigabytes com finais de linha LF ( \n ). Eu quero saber quantas linhas ele tem (ou, alternativamente, quantas LFs ele tem, que é, digamos, um a menos, mas eu não me importo). Qual é a maneira mais rápida ou mais barata de obter minha resposta?

Algumas possibilidades (embora tenha certeza de que estou perdendo algumas):

  • wc -l foo
  • grep -c $ foo (com -c , imprime somente a contagem de linhas correspondentes)
  • grep -c ^^ foo (o primeiro cursor escapa ao 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 do GnuWin32. Eu não conheço nenhuma maneira nativa para o Windows.)

    
por msh210 17.07.2015 / 23:54

2 respostas

3

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 awk

awk 'END { print NR }' foo

Outras leituras

por 18.07.2015 / 00:11
0

O mais rápido para mim é a linha de comando: find /v /c "" foo.txt

Eu ainda estou para fazer um benchmark adequado, mas eu tentei type e (get-content foo | measure-object -line) para um arquivo de 10GB em um servidor de 2GB de RAM, mas demorou muito tempo para ser concluído. Encontre no entanto retornou rápido o suficiente

    
por 31.10.2018 / 09:46