Ho un file di testo infile.txt
come tale:Come dividere i file e elaborarli in parallelo e poi ricucirli? unix
abc what's the foo bar.
foobar hello world, hhaha cluster spatio something something.
xyz trying to do this in parallel
kmeans you're mean, who's mean?
Ogni riga del file saranno trattati da questo comando perl nella out.txt
`cat infile.txt | perl dosomething > out.txt`
Immaginate se il file di testo è 100.000.000 linee . Voglio parallelizzare il comando bash così ho provato qualcosa di simile:
$ mkdir splitfiles
$ mkdir splitfiles_processed
$ cd splitfiles
$ split -n3 ../infile.txt
$ for i in $(ls); do "cat $i | perl dosomething > ../splitfiles_processed/$i &"; done
$ wait
$ cd ../splitfiles_processed
$ cat * > ../infile_processed.txt
Ma c'è un modo meno prolissa a fare lo stesso?
Perché dividerlo Comunque? Inoltre c'è un abuso di 'gatto' in là. 'Perl' può fare le modifiche sul posto, può anche fare una copia di backup. –
Sembra un problema XY.Che problema stai cercando di risolvere che ti porta a voler usare questo tipo di soluzione? –
Tratta il 'gatto ... | ... 'come' # fai qualcosa '. Ho bisogno di dividere un file per elaborarlo in parti e poi ricucire le parti processate in un singolo file. Non ho alcun controllo su "#do qualcosa", quindi lo alimento con un file di testo e restituisce un file di testo elaborato. – alvas