Вим | удалить первые несколько строк из файла 700 МБ - PullRequest
7 голосов
/ 27 декабря 2010

Как быстро соскрести первые несколько строк с большого файла, не открывая весь файл в основной памяти?


UPDATE

Я не хочу передавать начальные строки x в другой файл, а затем вырезать первые несколько строк, я хочу обновить исходный файл.

Ответы [ 7 ]

6 голосов
/ 27 декабря 2010

Не совсем vim, но чтобы вырезать первые 10 строк, вы можете использовать

tail --lines=+10 somefile.txt > newfile.txt
3 голосов
/ 23 мая 2011

На первоначальный вопрос здесь никогда не отвечали.Я считаю, что это решение:

sed -i 's/`head -n 500 foo.txt`//' foo.txt

Это позволит устранить первые 500 строк файла без необходимости создания временного файла.(На самом деле, вам, возможно, придется выполнить head -n 499) Я думаю, что это на самом деле весьма полезно в качестве однострочника, скажем, для очистки файлов журнала, без просто стирания всего журнала.

3 голосов
/ 27 декабря 2010
tail -n+11 somefile.txt | vim -

Чтобы отрубить первые 10 * строк и открыть файл для редактирования, не создавая временный файл.Обратите внимание, что при открытии этого файла у файла не будет имени в vim.Это единственный недостаток.

* Обратите внимание, что хотя я использовал 11 в команде, этот начинает со строки 11. Таким образом, он отрубит первые 10 строк.

1 голос
/ 27 апреля 2013
$ seq 1 502 > foo.txt
$ sed -i 1,500d foo.txt 
$ cat foo.txt 
501
502
0 голосов
/ 01 января 2011

Как насчет ..

  1. разделить оригинальный файл на 2 части. (p1: строки 0 - x) (p2: строки x+1 - n)
  2. edit p1, так как вы хотите редактировать первые x строки. Мы назовем это p1'
  3. объединить p1' и p2

Короче

  1. file -> p1 и p2
  2. p1 -> p1'
  3. p1' + p2 -> new_file

Команда

  1. используйте split или cut

  2. используйте vim или редактор по вашему выбору.

  3. используйте cat для объединения

0 голосов
/ 28 декабря 2010

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

0 голосов
/ 27 декабря 2010

vim всегда будет хотеть / нуждаться в чтении всего файла, поэтому нет никакого способа сделать это, используя (только) vim.Предложение Даркары выглядит хорошо.

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

...