Быстрый способ удалить строку из чрезвычайно большого файла

У меня есть 67GB CSV-файл (я знаю … я знаю …)

Мне нужно удалить 4 125878 строк из файла, поскольку он поврежден. Мои инструменты синтаксического анализа CSV не будут игнорировать или пропускать его.

Я мог бы использовать sed чтобы сделать что-то вроде

sed '4125878d' in.csv > out.csv

Но это было бы очень дорогостоящей операцией с точки зрения времени и дискового пространства.

Если я использую sed -i '4125878d' in.csv , операция занимает много времени.

Есть ли способ быстро удалить строку из середины огромного файла?

  • sed заменяет первое появление шаблона «пробел-табуляция»
  • Как манипулировать CSV-файлом с помощью sed или awk?
  • Удалять конечные пробелы только из первого поля
  • Поиск файла для числа, которое находится между двумя конкретными номерами
  • Вставка переменной в определенном месте с помощью sed
  • Sed, Awk Multiline log file, число {0-999] идентифицирует отношение
  • Извлечение положительных / отрицательных чисел с плавающей запятой из строки
  • Необходимо удалить - (минус) знак в конце в количестве из многих столбцов и вставить его на удаленные столбцы
  • 2 Solutions collect form web for “Быстрый способ удалить строку из чрезвычайно большого файла”

    Я верю, что нет.

    Даже если sed или какая-либо программа, которую вы используете для этого, достаточно умна, чтобы сделать изменения на месте, а не временным файлом, все равно придется переписывать все данные после начала строки, которую вы хотите удалить.

    Удаление строки означает, что вы перемещаете все содержимое файла с точки на, до конца предыдущей строки. Независимо от того, вам все равно придется переписывать файл с этого момента.

    Сделайте это на лету:

     csv-parser -f <(cat my-huge.csv | sed '4125878d') 
    Interesting Posts

    Как выключить или перезагрузить компьютер?

    Скопировать текущую строку в буфер обмена под курсором без выбора мыши

    Зарегистрировать обратный вызов для вновь вставленного диска?

    Перезагрузка Upstart не работает

    Режим Vim в оболочке FreeBSD?

    Compiz & XFCE – несогласие с количеством рабочих областей / кубических лиц

    Итак, дизайн разделения клиент-сервер не является узким местом X Window?

    Как заставить rtcwake использовать подходящее время для пробуждения?

    Команда lsof слишком длинна для определенного идентификатора процесса

    Как получить горячую клавишу «дублировать строку» в gedit?

    PyOpenCL на Linux Монетный двор: PLATFORM_NOT_FOUND_KHR

    fstab автомонтированное устройство не автоматически размонтируется

    Простое перемещение каталога внутри другого с помощью mv

    Запуск программы сборки в виде кольца 0

    Can / mnt / hgfs / 'shared folder' используется в качестве корня apache?

    Linux и Unix - лучшая ОС в мире.