разделить плоский файл размером 60 ГБ с записями, иногда занимающими несколько строк [closed]

Я обнаружил, что зависимости отсутствуют, и это все пакеты, которые мне нужно было установить.

Теперь работает нормально.

bcmwl-kernel-source_6.30.223.248+bdcom-0ubuntu8_amd64.deb   
linux-headers-4.6.0-kali1-common_4.6.4-1kali1_amd64.deb
linux-compiler-gcc-5-x86_4.6.4-1kali1_amd64.deb             
linux-headers-4.6.0-kali1-common-rt_4.6.4-1kali1_amd64.deb
linux-headers-4.6.0-kali1-all-amd64_4.6.4-1kali1_amd64.deb  
linux-headers-4.6.0-kali1-rt-amd64_4.6.4-1kali1_amd64.deb
linux-headers-4.6.0-kali1-amd64_4.6.4-1kali1_amd64.deb      
linux-kbuild-4.6_4.6.4-1kali1_amd64.deb

PS: Это очень помогло: apt --fix-broken install

1
01.06.2017, 20:07
2 ответа

Использование sed для соединения только разделенных строк

sed ':a
/".*"$/b
N;s/\n/ /;ba' input >> output

занимает 6 секунд для файла размером 10 МБ в моей системе. Это будет 10 часов для 60 ГБ.

bbe немного быстрее

bbe -b '/"/:/"/' -o output -e 'y/\n/ /' input

, но все равно занимает 4 секунды.

Боюсь, эти языки сценариев не подходят для работы с очень большими файлами. Как насчет написания небольшой программы на C?

3
27.01.2020, 23:24

Ваш Perl работает медленно из-за того, что для чтения файла используется цикл for. Вы действительно должны использовать цикл while, так как цикл for загружает весь файл в память за один раз. Вот почему для печати $count требуется целая вечность.

perl -ne '
   print,next if /^".*"$/m or /"$/m;
   chomp, $_ .= <>, redo unless eof;
' gene.data
0
27.01.2020, 23:24

Теги

Похожие вопросы