У меня есть файл размером 4 ГБ, в котором мне нужно выполнить некоторые операции. У меня есть сценарий Bash, чтобы сделать это, но Bash кажется плохо подходит для чтения больших файлов данных в массив. Поэтому я решил разбить файл с awk.Эффективное разделение больших файлов (в настоящее время используется awk)
Мой текущий сценарий:
for((i=0; i<100; i++)); do awk -v i=$i 'BEGIN{binsize=60000}{if(binsize*i < NR && NR <= binsize*(i+1)){print}}END{}' my_large_file.txt &> my_large_file_split$i.fastq; done
Однако проблема с этим сценарием является то, что он будет читать и цикл через этот большой файл в 100 раз (что предположительно приведет к примерно 400GB ИО).
ВОПРОС: Есть ли лучшая стратегия чтения в большом файле один раз? Возможно, запись в файлы в awk вместо перенаправления его вывода?
Почему бы просто не использовать 'split (1)'? – peak
Это похоже на разумное решение. –