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:

heckler disse...


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)

forinti disse...

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.

Marcus Aurelius disse...

}{$_=$.

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

forinti disse...

Exato Marcus. Perl é intuitivo, não?