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

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

Re[2]: [shell-script] Unsort


From: Viktor Mota
Subject: Re[2]: [shell-script] Unsort
Date: Mon, 5 Jul 2004 16:45:18 -0300

Olá Leonardo Serra,

segunda-feira, 5 de julho de 2004, 11:13:16, você escreveu:

LS> Olas,
LS> Antes de postar a duvida na lista, a primeira coisa que fiz foi procurar
LS> no historico da lista, infelizmente nao encontrei nada la. Mas a sua
LS> explicacao ja sera util.
LS> obrigado
LS> leoserra
LS> Em Seg, 2004-07-05 às 11:12, Fernando Lemes da Silva escreveu:
>>     Há algum tempo colocaram na lista um pequeno script que embaralhava
>> linhas de um arquivo. A ideia basicamente era ler o arquivo adicionando
>> um $RANDOM e um tab na frente de cada linha, depois as linhas eram 
>> ordenadas por este numero e o numero era retirado. De uma olhada no
>> historico que voce deve achar.
>> 
>>     []'s
>>     Fernando Lemes
>> 
>> Leonardo Serra Maciel de Campos wrote:
>> > Olas,
>> > Alquem sabe se existe algum utilitario que em vez de ordenar ele
>> > desordene. Ja procurei em varios lugares e nao estou conseguindo
>> > encontrar referencia. A unica coisa que encontrei foi um fonte em c de
>> > um programa que faz isto, mas o autor nao disponibilizou o programa de
>> > forma livre. Assim nao posso utiliza-lo.
>> > 
>> > t+
>> > leoserra

Fiz um script aproveitando a ideia do nosso colega Fernando!

Segue abaixo

==========================================================================
#!/bin/sh
#Script desordena.sh
#Criado por Viktor Mota <fulano2001 em terra com br>
#Em: 05-jul-2004

#Definindo variaveis
FONTEDB=dbmail
ARQUIVO=dbmail-desordenado
TEMPORA=dbmail-temp2

#Inicializando arquivo
echo "" >$ARQUIVO

#Abre o arquivo de fonte e equanto le sorteia numeros randomicos
cat $FONTEDB |
while read EMAIL
do
  numerornd=$((RANDOM%9999+99999))
  echo "$numerornd        $EMAIL" >>$ARQUIVO #Use um TAB em vez de espacos
done

#Coloca em ordem crescente o arquivo criado
sort -o $ARQUIVO $ARQUIVO

#Retira do arquivo os 8 primeiros caracteres, e escreve no arquivo
#temporario
cat $ARQUIVO | cut -b 8- >$TEMPORA

#Deleta o arquivo, e renomeia o tempora para o novo nome
rm -f $ARQUIVO
mv $TEMPORA $ARQUIVO

#Se quiser ver as ultimas linhas do arquivo como ficou (interessante
#para matar duvidas
tail $ARQUIVO

#Sair
exit 0
==========================================================================


[]s
Viktor Mota
address@hidden

--- tagline ---
O cúmulo... Da Magreza: Deitar na agulha e se cobrir com a linha




reply via email to

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