[FUGSPBR] Leitura de colunas de arquivos
Diego Linke - GAMK
linke em calnet.com.br
Sex Nov 29 10:42:47 BRST 2002
Ola,
>
> aaaaaaaaa bbbbbbbbbbbb ccccccccccccc dddddddddddd
> eeeeeeeee ffffffffffff ggggggggggggg hhhhhhhhhhhh
> iiiiiiiii jjjjjjjjjjjj kkkkkkkkkkkkk llllllllllll
> mmmmmmmmm nnnnnnnnnnnn ooooooooooooo pppppppppppp
>
>
> Eu tenho que fazer um totalizador que analise as v?rias colunas. O
> totalizador vou fazer com o grep, mas a leitura das colunas, que algu?m
> perguntou h? alguns dias, e eu eu simplesmente n?o consigo achar, nem no
> hist?rico, nem no meu arquiv?o de emails.
>
> Algu?m pode me ajudar ? (sim, j? fui ao man do grep.).
>
Seguinte so' complementando! Eu observei varias respostas para esta questao!
Mas a pergunta eh, AWK sendo uma linguagem o porque nao fazer somente, usando ela ?
Bom ai vai um exemplo de um programa em AWK para esta situacao (pelo o que eu entendi):
Arquivo coluna.txt:
iiiiiiiii jjjjjjjjjjjj kkkkkkkkkkkkk llllllllllll
aaaaaaaaa bbbbbbbbbbbb ccccccccccccc dddddddddddd
eeeeeeeee ffffffffffff ggggggggggggg hhhhhhhhhhhh
iiiiiiiii jjjjjjjjjjjj kkkkkkkkkkkkk llllllllllll
mmmmmmmmm nnnnnnnnnnnn ooooooooooooo pppppppppppp
Arquivo count_coluna2.awk:
#!/usr/bin/awk -f
BEGIN {
if (!ARGV[1]) {
printf("Faltou o parametro do nome do arquivo!\n")
exit 1
} else if (ARGV[2]) {
printf("Sobrou parametros!\n");
exit 1
} else if ((getline < ARGV[1]) == -1) {
printf("Nao foi possivel abrir este arquivo (%s)!\n",ARGV[1])
exit 1
}
cont = 0
}
{
ok = 1
for (i = 0; i < cont; i++) {
if (vetor[i] == $2) {
ok = 0
break;
}
}
if (ok == 1) {
vetor[cont] = $2
n_vetor[cont]++
cont++
} else {
n_vetor[i]++
}
}
END {
for (i = 0; i < cont; i++) {
printf("Achei %d coluna(s) '%s'\n",n_vetor[i],vetor[i]);
}
}
Feito isso chmod u+x count_coluna2.awk e:
(casa/ttyv3:~)> ./count_coluna2.awk coluna.txt
Achei 2 coluna(s) 'jjjjjjjjjjjj'
Achei 1 coluna(s) 'bbbbbbbbbbbb'
Achei 1 coluna(s) 'ffffffffffff'
Achei 1 coluna(s) 'nnnnnnnnnnnn'
(casa/ttyv3:~)>
Pronto um programa inteiro em AWK sem "invocar" nenhum processo extra!
Abracos
--
[ Diego Linke - GAMK ]
System/Network/Security Administrator
E-Mail/Site: gamk em gamk.com.br - http://www.gamk.com.br
Public Key: http://www.gamk.com.br/gamk.asc
Phone Number: (+5541) 9967-3464
_______________________________________________________________
Sair da Lista: http://www2.fugspbr.org/mailman/listinfo/fugspbr
Historico: http://www4.fugspbr.org/lista/html/FUG-BR/
Mais detalhes sobre a lista de discussão freebsd