Para organizar os arquivos pelo mundo:
$ paste -d'\n' <(grep world1 file) <(grep world2 file) <(grep world3 file) <(grep world4 file)
world1.com /randomkeygahjuh572/key639839
world2.com /randomkey788gauh72/key63whjk
world3.com /randomkey788gauh72/key63whjk
world4.com /randomkeyhghgdh778/key67567
world1.com /randomkeyhueh34778/key67uuu77
world2.com /randomkeyJJJJ1111/key63333
world3.com /randomkey7HHHH0000/key6333355k
world4.com /randomkey8998382/key6hh77686
Como funciona
Podemos usar grep
para selecionar as linhas de cada mundo:
$ grep world4 file
world4.com /randomkeyhghgdh778/key67567
world4.com /randomkey8998382/key6hh77686
paste
combina linhas de vários arquivos. O comando colar poderia ter esta aparência:
paste -d'\n' file1 file2 file3 file3.
Na verdade, não precisamos criar arquivos verdadeiros para cada mundo. Em vez disso, podemos criar objetos semelhantes a arquivos para cada um usando substituição de processo :
paste -d'\n' <(grep world1 file) <(grep world2 file) <(grep world3 file) <(grep world4 file)
A substituição do processo é suportada pelo bash, zsh e AT & ksh88 e ksh93, mas não para o traço, pdksh ou mksh.
Recurso extra: classificação por chave
Para ilustrar a flexibilidade dessa abordagem, classificaremos as chaves de cada mundo. Nota: a classificação divide os conjuntos de linhas. Não use isso se quiser manter os conjuntos juntos.
Podemos separar os mundos usando grep
e, em seguida, sort
cada um e, em seguida, mesclar as linhas novamente usando paste
:
$ paste -d'\n' <(grep world1 file | sort -k2,2) <(grep world2 file | sort -k2,2) <(grep world3 file | sort -k2,2) <(grep world4 file | sort -k2,2)
world1.com /randomkeygahjuh572/key639839
world2.com /randomkey788gauh72/key63whjk
world3.com /randomkey788gauh72/key63whjk
world4.com /randomkey8998382/key6hh77686
world1.com /randomkeyhueh34778/key67uuu77
world2.com /randomkeyJJJJ1111/key63333
world3.com /randomkey7HHHH0000/key6333355k
world4.com /randomkeyhghgdh778/key67567
Observe que sort
depende da localidade. Diferentes locales
podem resultar em pedidos diferentes.