Как открыть большой файл в терминале (использование vim приводит к зависанию терминала)? [дубликат]

Я использую Ubuntu 14.04. У меня есть большой файл журнала:

-rw-r--r-- 1 rails root 1792390124 Jan 10 14:54 /var/log/unicorn/unicorn.log

Тем не менее, мне нужно открыть его и найти в нем кое-что. Я пробовал vim, но при запуске

vim /var/log/unicorn/unicorn.log

просто открывается пустой экран, и даже когда я использую Ctrl + C , ничего не происходит. Терминал завис. Не обновляя какое-либо оборудование на моем компьютере (но я открыт для установки программного обеспечения), как я могу открыть файл и осмотреться (мне не нужно его редактировать, мне просто нужно прочитать из него несколько строк).

9
задан 10 January 2017 в 13:44

4 ответа

При работе с большими файлами лучше минимизировать объем информации, с которой вы собираетесь иметь дело, и для этого есть инструменты. Одним из упомянутых инструментов является grep для поиска нужных вам строк. Еще два инструмента, которые я бы порекомендовал использовать, это tail и head, которые могут отображать определенное количество строк или байтов от начала файла (head) или от конца (tail). Это полезно, если вам нужно только прочитать эти конкретные части файла, но ничего между ними нет.

Альтернативный способ - использовать команду split. Он может разбить файл на основе количества байтов или строк. Например,

$ mkdir SPLIT

$ cd SPLIT/                                                                                                       

$ split -l 5  /etc/passwd

$ ls
xaa  xab  xac  xad  xae  xaf  xag  xah  xai  xaj

Теперь мой /etc/password разбит на более мелкие файлы по 5 строк в каждом, которые вы можете открыть с помощью vim или другого текстового редактора

4
ответ дан 23 November 2019 в 04:53

Используйте использование команды less. less более эффективный способ считать файл в память. Существует 2 эквивалентных команды: more и most (что последний необходимо установить). Помещенные единственная страница в память.

, Но Ваш Наилучший вариант для поиска должен был бы использовать grep. Пример:

grep {searchstring} {file}

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

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

6
ответ дан 23 November 2019 в 04:53

Это зависит от того, какова Ваша цель.

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

Иначе, если Вы знаете, где в файле Вы ищете, можно использовать head или tail команды для захвата раздела/выборки файла. См. man head и man tail для получения дополнительной информации относительно того, как искать точные части.

при поиске определенной строки/записи можно использовать grep для поиска файла строку. Можно или использовать cat file | grep something или grep something file в зависимости от того, что Вы хотите сделать.

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

5
ответ дан 23 November 2019 в 04:53

Если Вы знаете точно, какую строку Вы хотите, используйте grep. Но если Вы ищете что-то, в чем Вы не уверены, использование less лучше, потому что оно покажет Вам контекст (который особенно полезен для файлов журнала).

Тип эти / команда из less для открытия поля поиска. Введите то, что Вы хотите затем хит, входят. Затем продолжать искать то же слово, тип n для продвижения и N для движения назад. Переходить в конец типа файла G, затем N или ?.

0
ответ дан 23 November 2019 в 04:53

Другие вопросы по тегам:

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