Como embaralhar arquivos de texto grandes de forma eficiente enquanto o canaliza no Linux?

0

Eu tenho um arquivo de texto com alguns GBs. Eu estou tentando embaralhar este arquivo de texto em um pipe.

Por exemplo, estas são algumas linhas de exemplo do que estou usando, mas não é eficiente e, de fato, o pipe não parece iniciar até que todo o arquivo seja lido. Talvez eu esteja errado nisso.

shuf HUGETEXTFILE.txt|some command

cat HUGETEXTFILE.txt|sort -R |some command

Eu também tentei usar

split -n 1/numberofchunks HUGETEXTFILE.txt|sort -R|some command 

Mas a tubulação termina quando o primeiro pedaço termina.

Estou tentando encontrar uma maneira eficiente de canalizar o arquivo de texto em um pipe, porque não quero gravar centenas de arquivos sempre que precisar de uma nova maneira de embaralhar ou distribuição aleatória.

obrigado

    
por yarun can 26.07.2014 / 00:19

1 resposta

0

Você pode tentar essa abordagem:

cat bigfile.txt|
  while IFS= read -r line; do
    echo '%s\n' "$line" |shuf |sort -n| grep "sample";
  done

O IFS é usado para dividir a saída em linhas aqui.

    
por 26.07.2014 / 02:59