terça-feira, 23 de outubro de 2012

Contando linhas com Perl

Eu queria contar as linhas de um arquivo de uns 4GB no Windows. No Linux, o wc resolveria a questão com sobra. Eu tentei usar o GNU Coreutils, mas não achei uma versão binária para o Sistema Operacional de Redmond.

Então, recorri ao camelo e com uma linha de Perl, resolvi o problema:

C:\perl -pe "}{$_=$." meu_arquivo_grande.txt
8738433

Não podia ser mais simples e claro.

4 comentários:


  1. type arquivo.txt | find /c /v ""


    sds,
    ~heckler

    PS1: eu sou culpado de um crime semelhante ... Findi passado escrevi um script python com o unico objetivo de aplicar um regex 'a stdin, para usar como filtro numa cmdline incantation maior. Eu tenho o sed compilado para Windows no path, mas nao consegui decifrar o manual para fazer o que eu queria (listar matches da regex), entao o script foi mais rapido ...

    Algo como:

    type arquivo.txt | script regex="..." | uniq -i | sort > out.txt

    PS2: cade a tag 'code' ou 'pre' para comentarios???

    PS3: nao ha'. (meu guri tem um Wii)

    ResponderExcluir
  2. Heckler, esse find acusa menos linhas. Eu instalei o GNU CoreUtils agora e o wc dele concorda com o meu perlzito. Vai saber. Agora vou ter menos oportunidades de praticar uns Katas de Perl.

    ResponderExcluir
  3. }{$_=$.

    Esse código é pura poesia.

    Se espremer os olhos, dá pra ver um emoticon representando a cara que eu fiz ao ler.

    É impressão minha ou ele está fechando um loop implícito e abrindo as chaves de novo só pra não dar erro de sintaxe no final?

    O.o

    ResponderExcluir
  4. Exato Marcus. Perl é intuitivo, não?

    ResponderExcluir