Postagem em destaque

Trocando aleatoriamente a ordem dos elementos

Sobre

Gerar permutações aleatórias.

Descrição

Escreva uma permutação aleatória das linhas de entrada para a saída padrão.

Para mais informações consulte o manual: shuf(1)

Uso

shuf [OPCAO]... [ARQUIVO]
shuf -e [OPCAO]... [ARG]...
shuf -i LO-HI [OPCAO]...

Exemplos

Considere o arquivo itens.txt com o seguinte conteúdo:
shaman@shellscriptx:~$ cat itens.txt
azul
vermelho
carro
moto
notebook
desktop
celular
tablet
Observe a ordem como os itens foram armazenados. Estão agrupados em categorias, tais como: cor, veículo, computador e móvel.

1. Alterando a ordem dos itens (aleatório).
shaman@shellscriptx:~$ shuf itens.txt
celular
vermelho
carro
notebook
azul
tablet
moto
desktop
O comando lê os itens e altera suas posições aleatoriamente na saída padrão. A ordem dos elementos muda a cada execução do comando.

Nota: `Shuf 'tem três modos de operação que afetam onde ele obtém suas linhas de entrada. Por padrão, ele lê as linhas da entrada padrão.

2. Permitindo linhas repetidas.
shaman@shellscriptx:~$ shuf -r itens.txt
celular
vermelho
moto
celular
celular
tablet
moto
desktop

...
..
.
Utilizando o parâmetro '-r', altera-se o comportamento do comando fazendo com que ele permita elementos repetidos na saída padrão. Sem especificar uma quantidade, os elementos são impressos ininterruptamente.

3. Especificando a quantidade de elementos na saída.
shaman@shellscriptx:~$ shuf -n 5 itens.txt
azul
moto
carro
vermelho
tablet
Especificando o tamanho total de itens na saída padrão, fez com que apenas cinco dos oito itens fossem retornados.

Nota: Por padrão é retornado todas as linhas.

4. Tratando cada argumento como uma linha de entrada.
shaman@shellscriptx:~$ shuf -e Fernanda Cintia Lucas Marcos
Marcos
Fernanda
Cintia
Lucas
Lê os elementos informados no parâmetro, agrupando-os um por linha.

Nota: Cada elemento é separado pelo delimitador ' ' (espaço). Itens composto deve-se usar aspas simples (') ou duplas (").

5. Alterando a ordem de um intervalo de números.
shaman@shellscriptx:~$ shuf -i 1-20
10
13
4
7
14
2
3
1
20
12
15
8
11
17
9
16
19
5
6
18
Neste exemplo foram gerados números de 1 à 20 em uma ordem aleatória.

Nota: Age como se a entrada veio de um arquivo contendo o intervalo de inteiros decimais não assinados LO ... HI, um por linha.

6. Gerando apenas um número aleatório dentro de um intervalo.
shaman@shellscriptx:~$ shuf -i 500-1000 -n 1
851
Usando o parâmetro '-i'  para especificar um intervalo de 500 até 1000, porém com no máximo um item na saída. Uma forma diferente de gerar um número aleatório quando o costume é utilizar a variável de ambiente $RANDOM.

Comentários

Contato

Nome

E-mail *

Mensagem *