[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
- Unsort, Leonardo Serra Maciel de Campos, 2004/07/05