В эпоху большого количества информации, большие файлы (размером больше 500 Мб) могут встречаться очень часто. Предположим что вам нужно найти информацию или отредактировать такой файл, но обычные текстовые редакторы не приспособлены для этой задачи и могут просто зависнуть при попытке открыть файл размером несколько гигабайт из-за нехватки памяти.
Если вы опытный системный администратор вы можете открыть такой файл используя комбинацию консольных команд cat, tail, grep, sed, awk и т д. В этой статье я расскажу о более дружелюбных способах открытия и редактирования больших файлов в Linux.
Сначала давайте создадим текстовый файл для экспериментов размером 500 Мб. Для этого воспользуемся командой:
yes "losst.pro " | head -c 500MB > test.txt
Содержание статьи
1. Большие файлы в Vim
У текстового редактора Vim есть множество различных плагинов или скриптов которые расширяют его функциональность. Одним из таких плагинов есть LargeFile Plugin.
Этот плагин ускоряет загрузку и редактирование больших файлов путем отключения таких дополнительных функций Vim как события, отмена последнего действия, подсветка синтаксиса и т д.
Чтобы установить LargeFile plugin сначала необходимо установить vim, если он еще не установлен. Для Debian, Ubuntu, Linux Mint:
sudo apt install vim
В Fedora, ContOS, или RHEL:
sudo yim install vim-enhanced
Теперь скачайте плагин с официального сайта последняя версия на данный момент 5. Для установки в домашнюю директорию вы можете открыть vba файл расширения с помощью vim:
unzip LargeFile.vba.gz
vim LargeFile.vba
Наберите :so % и нажмите Enter, чтобы Vim установил расширение в домашнюю папку. Затем можете набирать :q для выхода. Плагин будет установлен в ~/.vim/plugin/LargeFile.vim и вы сможете его использовать.
Когда большой файл загружается в vim этот плагин отключает события, отмену действий и подсветку синтаксиса. По умолчанию большими файлами считаются файлы размером более 100 Мб. Чтобы изменить эту настройку нужно отредактировать файл ~/.vimrc. Например, будем считать большими файлы больше 10 Мб:
vi ~/.vimrc
Несмотря на то что плагин LargeFile может ускорить загрузку и просмотр больших файлов сам vim справляется с редактированием больших файлов не очень хорошо потому что он пытается загрузить файл целиком в оперативную память. Например при загрузке моего текстового файла размером 500 Мб утилита будет занимать достаточно много оперативной памяти:
При этом на открытие файла ушло примерно 10-15 секунд. Так что если ваши файлы имеют размер больше чем количество оперативной памяти вам необходимо рассматривать другие варианты.
2. Glogg Log Explorer
Если все что вам нужно это просмотр содержимого файла и вы не собираетесь его редактировать вы можете использовать Glogg. Это анализатор логов с графическим интерфейсом. Glogg поддерживает фильтрацию вывода с помощью расширенных регулярных выражений и масок.
Для установки Glogg в Debilan (Wheezy и выше) Ubuntu и Linux Mint наберите:
sudo apt install glogg
Для установки в Fedora:
sudo yum install glogg
Для открытия текстового файла просто выполните:
glogg test.txt
Glogg открывает большие файлы очень быстро. Мой тестовый файл открылся практически мгновенно:
Вы можете ввести регулярное выражение в текстовое поле и и нажать поиск. Поддерживается поиск с учетом регистра, результаты поиска вы увидите в нижнем окне.
По сравнению с Vim, Glogg более легкий, для загрузки файла журнала размером 500 Мб было использовано всего лишь 141 Мб оперативной памяти.
3. JOE Text Editor
JOE это легкий консольный текстовый редактор выпущенный под лицензией GPL. JOE один из немногих текстовых редакторов поддерживающих работу с большими файлами. С его помощью можно открывать и редактировать файлы намного большего размера чем размер оперативной памяти.
К тому же JOE поддерживает множество мощных функций для редактирования текста, таких как: безопасное редактирование, поиск и замена по регулярным выражениям, неограниченная отмена и повтор операций, подсветка синтаксиса и т д.
Для установки JOE в Debian, Ubuntu, или Linux Mint наберите:
sudo apt install joe
Для Fedora, CentOS или RHEL:
sudo yum install joe
Чтобы открыть текстовый файл для редактирования выполните:
joe test.txt
Загрузка больших файлов в JOE происходит немного медленнее чем в Glogg. На загрузку файла размером 500 Мб ушло примерно 15 секунд. Но это не так уж плохо учитывая что сразу после загрузки файл можно полноценно редактировать.
Потребление памяти JOE впечатляет. На загрузку и редактирование текстового файла размером 500 Мб было использовано 53 Мб физической памяти.
Если вам известный еще какой нибудь способ редактировать большие файлы, сообщите нам в комментариях.
1 Гб не такой большой файл.
чем 10 Гб открыть? (результаты наблюдений за 10 лет :\)
отложил на время.
сегодня с nano открыл! :)))
пс. 4 ядра интел, 32Гб оперативы
Чем открыть файл размером 1 Тб?
Сейчас и 10 Гб не такой большой файл...