shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Desempenho ao checar se string existe em arquivo de t


From: Luis Fernando
Subject: Re: [shell-script] Desempenho ao checar se string existe em arquivo de texto
Date: Wed, 24 Dec 2014 09:19:36 -0200
User-agent: KMail/4.13.3 (Linux/3.18.1-031801-generic; KDE/4.13.3; x86_64; ; )

Olá Mercês,

        Aqui vão meus 2 centavos de contribuição: o que acha da idéia de 
carregar a lista de usuários do seu passwd em um array em memória (uma vez que 
será infinitamente menor que sua lista a ser pesquisada) e iniciar a pesquisa 
em cima deste array? Desta forma, você estará lendo o arquivo (passwd) uma 
única vez e não a cada interação do laço. Acredito que será mais performático.

        O outro centavo de contribuição vai pra outra linha onde vc faz o 
cat/zcat: já pensou em usar o grep/zgrep diretamente nos arquivos envolvidos ao 
invés de dar o cat e depois fazer o sed procurando o que vc quer? Será um passo 
a menos.

        Se falei alguma besteira, por favor me corrijam.

        []'s

Atenciosamente,

Luis Fernando
address@hidden

Atenção: O conteúdo deste email é confidencial, legalmente protegido, restrito 
e de uso exclusivo dos destinatários, sendo sua divulgação proibida por lei. 
Caso tenha recebido essa correspondência eletrônica por equívoco, por favor, 
avise imediatamente o remetente, respondendo este email e em seguida delete-o.

Em qua 24 dez 2014 02:48:07 Paulo Bettega address@hidden [shell-script] 
escreveu:
> Olá Fernando, não sei se é mais rápido, mas é outro jeito de
> mostrar a lista de nomes comuns.
> 
> O comm mostra as linhas comuns, então tem que filtrar o /etc/passwd.
> Mas o $outfile não precisa, vc diz que ele já é um nome por linha.
> 
> O que pode ser uma grande desvantagem é que os arquivos têm que
> estar ordenados, então se houver ganho no tempo da comparação,
> pode ser perdido na ordenação do $outfile.
> 
> comm -12 <(cut -d: -f1 /etc/passwd|sort) <(cut -d: -f1 /etc/passwd|sort|sed 
> '6,10!d')
> daemon
> ftp
> games
> gdm
> guest
> 
> Abraços Paulo Bettega
> 
> 
> On 23-12-2014 23:36, Fernando Mercês address@hidden [shell-script] wrote:
> > Amigos,
> >
> > Num script que acabei de fazer [1] tenho um arquivo de texto que é uma 
> > lista de nomes de usuário (um
> > por linha). E quero checar se eles existem no sistema. Fiz deste jeito:
> >
> > whileIFS= readi;do
> > grep -qm1 "^$i:" /etc/passwd && echo "$i matches with an existent user. Be 
> > careful!"
> > done < "$outfile"
> >
> >
> > Mas este "$outfile" é muito grande. Milhares de linhas e demora um pouco. 
> > Alguma ideia pra otimizar?
> >
> > Grato e feliz natal! :)
> >
> > [1] https://gist.github.com/merces/0a4d2272d79d00cc0fe1
> >
> > Att,
> >
> > Fernando Mercês
> > Linux Registered User #432779
> > www.mentebinaria.com.br <http://www.mentebinaria.com.br>
> > ------------------------------------
> > "Ninguém pode ser escravo de sua identidade; quando surge uma possibilidade 
> > de mudança é preciso
> > mudar". (Elliot Gould)
> >
> 
> 
> 
> ------------------------------------
> 
> ------------------------------------
> 
> ---------------------------------------------------------------------
> Esta lista não admite a abordagem de outras liguagens de programação, como 
> perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio 
> aviso.
> ---------------------------------------------------------------------
> Sair da lista: address@hidden
> ---------------------------------------------------------------------
> Esta lista é moderada de acordo com o previsto em 
> http://www.listas-discussao.cjb.net
> ---------------------------------------------------------------------
> Servidor Newsgroup da lista: news.gmane.org
> Grupo: gmane.org.user-groups.programming.shell.brazil
> 
> 
> ------------------------------------
> 
> Links do Yahoo Grupos
> 
> 
-- 


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

[Prev in Thread] Current Thread [Next in Thread]