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

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

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

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

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

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

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

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

  • Каков наилучший способ найти список нескольких строк в большом текстовом файле
  • Объединение двух файлов, по одному столбцу за раз
  • sed с переменной
  • присоединиться к sed output
  • Удалите первые n байтов файлов
  • Однострочный шрифт для вставки новой строки текста (буквально регулярное выражение, а значит, и многих экранированных символов) в файле конфигурации перед определенной строкой?
  • Как использовать sed для вставки строки вверху моего файла?
  • присоединяйте два файла на основе столбца, когда в сценарии bash нет взаимно однозначного соответствия (awk, grep, sed)
  • 2 Solutions collect form web for “Быстрый способ удалить строку из чрезвычайно большого файла”

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

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

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

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

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

    Включите систему с помощью USB-клавиатуры?

    Доступ к кешу файловой системы, который не находится в оперативной памяти, но диск на диске уже выпущен

    Стандарты использования POSIX для требования хотя бы одного необязательного аргумента arg

    Как заблокировать учетную запись пользователя до такой степени, чтобы она могла читать / писать / выполнять как можно меньше?

    Невозможно выполнить двойную загрузку Fedora

    Отображение сообщений в tty с использованием whiptail через monit

    Принудительная команда для запуска или выхода из системы?

    Bash: перемещать файлы определенного шаблона

    Не удалось найти файлы postgresql.conf & pg_hba.conf в моей установке postgresql

    Как я должен обрабатывать shebang при написании моей собственной оболочки?

    Распространение сценария. Должен ли я использовать / bin / gawk или / usr / bin / gawk для shebang?

    Команды Bash не найдены

    / proc / bus / usb в / etc / fstab запрещает мой компьютер запускать графическую сессию

    Как запустить «gdbserver» в фоновом режиме?

    Административно распространять несколько правил для каждого получателя Thunderbird для некоторых пользователей?

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