16

У меня огромный текстовый файл, слишком большой, чтобы все это помещалось в память. Все, что мне нужно сделать с этим текстовым файлом, это отредактировать первую строку (это файл CSV, и мне нужно изменить заголовки).

Есть ли простой способ сделать это в bash?

2 ответа2

21

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

Другой способ - разделить файл, отредактировать и снова присоединиться:

split -b 10000k <file>

and to join:

cat xa* > <file>
3

Если ваша модификация изменяет длину строки, необходимо переписать весь файл, см., Например, это обсуждение SO. Возможно, вам следует рассмотреть возможность сохранения данных в базе данных.

Имея это в виду, вы можете редактировать файл с помощью sed. Чтобы заменить первую строку, сделайте что-то вроде этого (GNU sed):

< oldfile sed '1c\new_heading' > newfile

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .