У меня огромный текстовый файл, слишком большой, чтобы все это помещалось в память. Все, что мне нужно сделать с этим текстовым файлом, это отредактировать первую строку (это файл CSV, и мне нужно изменить заголовки).
Есть ли простой способ сделать это в bash?
edlin
для ms-dos илиed
для Unix, похоже, не имели этой проблемы, но где только линейные редакторы ... RAM в эти времена были редкостью и ценностью, а размер файла в гигабайтах был невозможен! ;)ed
!!! но это было бы хорошо в этом случае (не уверен, что он может обработать файл такого размера ...)Ответы:
Вы можете использовать,
less
чтобы увидеть, что вы хотите редактировать и использоватьsed
для внесения изменений. Таким образом, вы редактируете без загрузки всего файла.Другой способ - разделить файл, отредактировать и снова присоединиться:
источник
Если ваша модификация изменяет длину строки, весь файл должен быть переписан, см., Например, это обсуждение SO. Возможно, вам следует рассмотреть возможность сохранения данных в базе данных.
Имея это в виду, вы можете редактировать файл с помощью sed. Чтобы заменить первую строку, сделайте что-то вроде этого (GNU sed):
источник