[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]