2015-04-28 2 views
2

У меня есть большой файл с разделителями табуляции (10 ТБ).Как использовать Linux «разрезать» параллельно

Я хотел бы отрезать файл по определенным столбцам, и я хотел бы сделать это параллельно, используя каждый из моих 24 ядер.

cut -f1,2,3 file > out 

Любые мысли о том, как это сделать, используя несколько ядер или параллельно ..?

У меня есть некоторые идеи, как

cat file | parallel --round-robin --pipe "cut -f1 1,2,3" > out 

cat file | parallel --round-robin --pipe --block 1000000k "cut -f1 1,2,3" > out 
+1

Это не так полезно, как вы могли бы подумать. Здесь много времени - это потоковая передача данных с диска, а не операция 'cut'. – Sobrique

+1

Sobrique - самый желанный справа. 'iostat -dkx 1' хорошо показывает использование дисков. –

ответ

1

Если диск не является ограничивающим фактором (но процессор):

parallel -k --pipepart -a big.tsv --block 1g cut -f1 1,2,3 > out