Как отредактировать текстовые файлы мультигигабайта? Vim не работает = ([закрытый]

Устаревший ответ: см. Другие ответы.


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

См. здесь: Фильтрация встроенных документов в MongoDB

В этом ответе предлагается изменить схему, чтобы она лучше подходила для работы с данными.

Вы можете использовать либо «точечную нотацию», либо $ elemMatch, чтобы вернуть правильный документ с соответствующим «заголовком заметки» ...

> db.collection.find({ "notes.title" : "Hello MongoDB"}, { "notes.title" : 1"});

или ...

> db.collection.find({ "notes" : { "$elemMatch" : { "title" : "Hello MongoDB"} }});

Но вы получите весь массив , а не только элемент массива, который вызвал совпадение.

Кроме того, есть о чем подумать ... с вашей текущей настройкой будет трудно выполнять какие-либо операции над элементами в массиве.

Если вы не измените свою схему (как подсказывает ответ, связанный с этим) ... я бы рассмотрел возможность добавления «идентификаторов» к каждому элементу в массиве, чтобы вы могли легко, например, удалить его, если это необходимо.

107
задан Philip Brocoum 26 May 2009 в 01:32
поделиться

12 ответов

If you are on *nix (and assuming you have to modify only parts of file (and rarely)), you may split the files (using the split command), edit them individually (using awk, sed, or something similar) and concatenate them after you are done.

cat file2 file3 >> file1
69
ответ дан 24 November 2019 в 03:35
поделиться

Единственное, что я смог использовать для чего-то вроде этого, - это мой любимый шестнадцатеричный редактор Mac, 0XED. Однако это было с файлами, которые я считал большими - десятки мегабайт. Я не уверен, как далеко это зайдет. Однако я почти уверен, что он загружает в память только части файла одновременно.

1
ответ дан 24 November 2019 в 03:35
поделиться

В прошлом я ' Мы успешно использовали подход разделения / редактирования / объединения, когда файлы становятся очень большими. Чтобы это работало, вы должны знать, где находится редактируемый текст в исходном файле.

0
ответ дан 24 November 2019 в 03:35
поделиться

Я использовал TextPad для больших файлов журналов, у него нет верхнего предела.

1
ответ дан 24 November 2019 в 03:35
поделиться

Я использовал встроенный редактор / просмотрщик FAR Commander для сверхбольших файлов журнала.

2
ответ дан 24 November 2019 в 03:35
поделиться

Раньше я открывал 3-гигабайтный файл с помощью этого инструмента http://csved.sjfrancke.nl/

2
ответ дан 24 November 2019 в 03:35
поделиться

Лично мне нравится UltraEdit . Вот их небольшой рассказ о больших файлах .

2
ответ дан 24 November 2019 в 03:35
поделиться

Вау, никогда не удавалось заставить vim задыхаться, даже с один или два ГБ. Я слышал, что UltraEdit (в Windows) и BBEdit (на Mac) даже больше подходят для файлов еще большего размера, но у меня нет личного опыта.

3
ответ дан 24 November 2019 в 03:35
поделиться

Я думаю, что шестнадцатеричные редакторы довольно часто обрабатывают огромные файлы. В Windows я использую HxD , который утверждает, что обрабатывает файлы размером до 8 ЭБ (8 миллиардов гигабайт).

6
ответ дан 24 November 2019 в 03:35
поделиться

Я пытался сделать это, в основном с файлами размером около 1 ГБ, когда мне нужно было внести небольшие изменения в SQL. свалка. Я использую Windows, и это очень больно. Это серьезно сложно.

Возникает очевидный вопрос: "Зачем вам это нужно?" Я могу сказать вам по опыту, когда приходилось пробовать это более одного раза, вы, вероятно, действительно хотите попробовать найти другой способ.

Итак, как вы это делаете? Я сделал это несколькими способами. Иногда я могу заставить vim или nano открыть файл, и я могу их использовать. Это действительно тяжелая боль, но она работает.

Если это не работает (как в вашем случае), у вас есть только несколько вариантов. Вы можете написать небольшую программу для внесения необходимых вам изменений (например, поиск и замену). Вы можете использовать программу командной строки, которая может это сделать (может быть, это можно сделать с помощью sed / awk / grep / etc?)

Если они не работают, вы всегда можете разбить файл на куски (что-то например, split - очевидный выбор, но вы можете использовать голову / хвост, чтобы получить нужную деталь), а затем отредактировать нужную (ые) часть (и), а затем повторно объединить.

Поверьте мне, попробуйте найти другой способ.

Так как вы это делаете? Я сделал это несколькими способами. Иногда я могу заставить vim или nano открыть файл, и я могу их использовать. Это действительно тяжелая боль, но она работает.

Если это не работает (как в вашем случае), у вас есть только несколько вариантов. Вы можете написать небольшую программу для внесения необходимых вам изменений (например, поиск и замену). Вы можете использовать программу командной строки, которая может это сделать (может быть, это можно сделать с помощью sed / awk / grep / etc?)

Если они не работают, вы всегда можете разбить файл на куски (что-то например, split - очевидный выбор, но вы можете использовать голову / хвост, чтобы получить нужную деталь), а затем отредактировать нужную (ые) часть (и), а затем повторно объединить.

Поверьте мне, попробуйте найти другой способ.

Так как вы это делаете? Я сделал это несколькими способами. Иногда я могу заставить vim или nano открыть файл, и я могу их использовать. Это действительно тяжелая боль, но она работает.

Если это не работает (как в вашем случае), у вас есть только несколько вариантов. Вы можете написать небольшую программу для внесения необходимых вам изменений (например, поиск и замену). Вы можете использовать программу командной строки, которая может это сделать (может быть, это можно сделать с помощью sed / awk / grep / etc?)

Если они не работают, вы всегда можете разбить файл на куски (что-то например, split - очевидный выбор, но вы можете использовать голову / хвост, чтобы получить нужную деталь), а затем отредактировать нужную (ые) часть (и), а затем повторно объединить.

Поверьте мне, попробуйте найти другой способ.

Иногда я могу заставить vim или nano открыть файл, и я могу их использовать. Это действительно тяжелая боль, но она работает.

Если это не работает (как в вашем случае), у вас есть только несколько вариантов. Вы можете написать небольшую программу для внесения необходимых вам изменений (например, поиск и замену). Вы можете использовать программу командной строки, которая может это сделать (может быть, это можно сделать с помощью sed / awk / grep / etc?)

Если они не работают, вы всегда можете разбить файл на куски (что-то например, split - очевидный выбор, но вы можете использовать голову / хвост, чтобы получить нужную деталь), а затем отредактировать нужную (ые) часть (и), а затем повторно объединить.

Поверьте мне, попробуйте найти другой способ.

Иногда я могу заставить vim или nano открыть файл, и я могу их использовать. Это действительно тяжелая боль, но она работает.

Если это не работает (как в вашем случае), у вас есть только несколько вариантов. Вы можете написать небольшую программу для внесения необходимых вам изменений (например, поиск и замену). Вы можете использовать программу командной строки, которая может это сделать (может быть, это можно сделать с помощью sed / awk / grep / etc?)

Если они не работают, вы всегда можете разбить файл на куски (что-то например, split - очевидный выбор, но вы можете использовать голову / хвост, чтобы получить нужную деталь), а затем отредактировать нужную (ые) часть (и), а затем повторно объединить.

Поверьте мне, попробуйте найти другой способ.

t работать (как и в вашем случае) у вас есть только несколько вариантов. Вы можете написать небольшую программу для внесения необходимых вам изменений (например, поиск и замену). Вы можете использовать программу командной строки, которая может это сделать (может быть, это можно сделать с помощью sed / awk / grep / etc?)

Если они не работают, вы всегда можете разбить файл на куски (что-то например, split - очевидный выбор, но вы можете использовать голову / хвост, чтобы получить нужную деталь), а затем отредактировать нужную (ые) часть (и), а затем повторно объединить.

Поверьте мне, попробуйте найти другой способ.

t работать (как и в вашем случае) у вас есть только несколько вариантов. Вы можете написать небольшую программу для внесения необходимых вам изменений (например, поиск и замену). Вы можете использовать программу командной строки, которая может это сделать (может быть, это можно сделать с помощью sed / awk / grep / etc?)

Если они не работают, вы всегда можете разбить файл на куски (что-то например, split - очевидный выбор, но вы можете использовать голову / хвост, чтобы получить нужную деталь), а затем отредактировать нужную (ые) часть (и), а затем повторно объединить.

Поверьте мне, попробуйте найти другой способ.

8
ответ дан 24 November 2019 в 03:35
поделиться

Это могут быть плагины, которые заставляют его задыхаться. (подсветка синтаксиса, складки и т. д.)

Вы можете запускать vim без плагинов.

vim -u "NONE" hugefile.log

Это минимализм, но он, по крайней мере, даст вам привычные движения vi.

syntax off

- еще один очевидный вопрос. Сократите установку и найдите то, что вам нужно. Вы узнаете, на что он способен и нужно ли вам решать задачу другими способами.

74
ответ дан 24 November 2019 в 03:35
поделиться

Возможно, вы захотите проверить этот плагин VIM , который отключает некоторые функции vim в интересах скорости загрузки больших файлов.

15
ответ дан 24 November 2019 в 03:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: