Чтение содержимого больших файлов без использования команды «cat» в Linux
Я пытаюсь более эффективный способ чтения содержимого файла в Linux без использования команды «cat», особенно для файлов большего размера, как в таких случаях cat просто снимает память и процессор на сервере.
Одна вещь, которая приходит мне в голову, это использование grep -v «character-set-which-is-unlikely-in-the-file» filename
Но каждый раз использовать разные наборы символов и надеяться, что они не появятся в файле, не будет эффективным.
1 ответ
Если вы просто хотите прочитать файл, чтобы он кэшировался, возможно, самый простой способ это:
Обратите внимание, что вам не нужно показывать данные на экране, чтобы прочитать их с диска. Эта команда читает файл и игнорирует содержимое, выгружая его в /dev/null, но все равно читает все данные.
Если нагрузка на процессор возрастает, это, вероятно, хорошо, а это означает, что компьютер усердно работает и будет завершен раньше, чем позже. Если это терпит крах, тем не менее, есть кое-что еще неправильно.
Если у вас есть какая-то конкретная причина не использовать команду «cat», вы можете вместо этого попробовать «dd», но это сложнее написать и не будет быстрее:
dd if=filename of=/dev/null bs=1M
Это вдохновило меня на несколько тестов. На моем конкретном компьютере и «cat», и «dd» потребовалось 24,27-24,31 секунды для чтения большого файла на механическом диске, когда он еще не был кэширован, и 0,39-0,40 секунды, когда он был кэширован. (Три теста для каждого случая, с очень небольшой вариабельностью.)
Обе эти программы содержат код для записи данных, даже если они выгружаются в /dev/null, поэтому можно ожидать, что программа, специально написанная только для чтения, будет немного быстрее, но я получал те же моменты времени, когда пытался это сделать.
Русские Блоги
Почему 80%кодовых фермеров не могут сделать архитектора? >>>
В эпоху «большие данные» мы часто сталкиваемся с большими текстовыми файлами (ГБ или больше). Предположим, нам нужно искать и отредактировать эти большие документы или решить некоторые конкретные проблемы, нам необходимо вручную проанализировать несколько файлов журнала GB. Традиционное программное обеспечение для редактирования текста не эффективно для работы с такими большими файлами. Когда мы пытаемся открыть большой файл, мы часто чувствуем себя подавленными из -за недостаточной памяти.
Если вы опытный системный администратор, вы можете использовать комбинацию кошек, хвоста, грип, SED, AWK и других команд, чтобы открыть и редактировать текстовый файл. В этом уроке я расскажу о том, как Откройте (и редактируйте) большой текстовый файл в Linux Более дружелюбные способы и методы.
Плагин с большим файлом Vim
Редакторы текста VIM имеют большое количество плагин -IN (или сценариев), которые могут расширить функцию VIM. Один из плагинов VIMБольшой плагин。
Большой плагин -IN может сделать большие файлы быстрее загружать и отредактированные. Он достигается путем отключения некоторых функций, отступания и высокой грамматики VIM.
Чтобы установить заглушку с большим файлом на VIM, мы должны сначала подтвердить, был ли VIM установлен.
В Debian, Ubuntu или Linux Mint System:
В системе Fedora, Centos или RHEL:
$ sudo yum install vim-enhanced
ОтVim websiteЗагрузите плагин -argfile -in, последний номер версии составляет 5, а загруженный файл будет сохранен в формате Vimball (End in .vba).
Чтобы установить заглушку в вашем домашнем каталоге, откройте файл .VBA с помощью VIM, как показано ниже.
$ gunzip LargeFile.vba.gz $ vim LargeFile.vba
Введите «: SO %» в окне VIM, а затем нажмите клавишу Enter, чтобы установить эту пробку -в вашем домашнем каталоге.
После завершения введите «: q», чтобы выйти из Vim.
Эта заглушка -IN будет установлен под ~/.vim/plugin/lagryfile.vim. Теперь вы можете использовать Vim как обычно.
При загрузке «большого» файла в VIM функция этого плагина -отключить события, возврат и высокую грамматику. Документы, превышающие 100 МБ по умолчанию, будут считаться «большими файлами» плагинами. Чтобы изменить настройки по умолчанию, вы можете редактировать ~/.vimrc -файл (если вы не существуете, создайте его).
Если вы хотите свести к минимуму стандарт больших файлов до 10 МБ, вы можете добавить его в ~/.vimrc
Хотя большой файл может ускорить загрузку файла файла, сам VIM не поддерживает файлы редактирования, потому что он будет загружать весь файл в память одновременно. Например, загрузка 1G файлов с VIM будет занимать много места для памяти и обмена, как показано на верхнем выходе, показанном ниже.
Поэтому, если ваш файл, очевидно, больше, чем физическая память вашей системы Linux, вы должны рассмотреть другие варианты, как указано ниже.
Glogg журнал менеджер ресурсов
Если вам нужно только просмотреть текстовый файл, а не отредактировать его, вы можете рассмотретьgloggСущность Это независимый анализатор журнала, основанный на графическом пользовательском интерфейсе. Этот анализатор Glogg поддерживает фильтрацию и фильтрацию текстовых файлов, которые будут открыты с помощью регулярных выражений и передачи тканей. Пользователи видят только то, на что они действительно обращают внимание.
Установите Glogg в Debian (Wheezy версия или более высокая версия), систему Ubuntu или Linux Mint:
$ sudo apt-get install glogg
Установите Glogg в системе Fedora (17 -я версия или более высокая версия):
Откройте текстовый файл с помощью Glogg:
Glogg может быстро открыть большой текстовый файл. Мне потребовалось около 12 секунд, чтобы открыть файл журнала 1G.
В области «Текст» вы можете ввести регулярное выражение, а затем нажать «Поиск», чтобы нажать новый новый, который поддерживает выражение чувствительного поиска и автоматического обновления. После поиска содержимое экрана будет отображаться в нижней части окна.
По сравнению с VIM от загрузки файлов Glogg выглядит легче. После загрузки файла журнала 1G он использует только 83 -метровую физическую память.
Joe Style Editor
JOEЭто легкий текстовый редактор на основе терминала, размещенный под GPL. Джо — редкий текстовый редактор, который поддерживает большие файлы, которые могут открывать и редактировать файлы больше, чем физическая память.
Кроме того, Джо поддерживает различные функции функционального редактирования текста, такие как неразрушающее редактирование, поиск и замена с регулярными выражениями, неограниченное отзыв/re -doing, высокая грамматика и так далее.
Установите Джо в Debian, Ubuntu или Linux Mint System:
Установите Джо в систему Fedora, Centos или RHEL:
Чтобы открыть текстовый файл редактора, запустите:
По сравнению с упомянутым выше GLOGG, для загрузки большого текстового файла с Joe будет немного карты, и загрузить файл 1G в течение почти 30 секунд, но, учитывая полный текстовый редактор файла, это все еще можно допустить. Как только файл загружен, этот файл может быть отредактирован в очень быстром режиме терминала.
Потребление памяти Джо впечатляет. Загрузите и отредактируйте текстовый файл 1 ГБ, который стоит только 47 МБ физической памяти.
Если вы также знаете другие методы, чтобы открыть/редактировать большие текстовые файлы в Linux, пожалуйста, поделитесь с нами!
Эта статьяLCTTОригинальный перевод,Linux ChinaЧесть
Просмотр очень больших логов в Linux
Предположим, что у нас есть огромный файл логов в несколько гигабайт, и нам нужно найти информацию по какому-нибудь слову (это может быть IP-адрес, GUID запроса, код ошибки, логин пользователя — всё, что угодно). Можно, конечно, использовать Far Manager или Midnight Commander. При открытии файла через F3 они НЕ загружают его целиком в память, что позволяет просматривать довольно большие логи и искать по ним. Но есть способ лучше.
Все последующие команды, описанные в статье, приведены для консоли Linux.
Поиск строк с указанной подстрокой в лог файле:
Эта команда выведет из файла «mylogfile.log» 10 строк перед строками, содержащими подстроку «127.0.0.1», саму строку, содержащую её, и 20 строк после неё. Количество строк после искомой строки, которые нужно вывести задаётся опцией -A , а количество строк перед искомой строкой, которые нужно вывести задаётся опцией -B .
Можно также выводить в результат команды grep номера строк с помощью опции -n :
Можно также использовать регулярные выражения. Например:
Этак команда выведет строки, которые начинаются (начало строки указывается специальным символом «^») с «2017-07-05 21:», а затем идёт любой символ (задаётся специальным символом точки «.»), после которого «6:».
Регулярные выражения очень мощны и позволяют задавать достаточно сложные условия поиска. Полное их описание выходит за рамки этой статьи, лучше смотрите в официальной документации на grep. Синтаксис этих регулярны выражений в принципе вполне стандартен, так что если вы знакомы с регулярными выражениями в Java, то проблем у вас возникнуть не должно.
И ещё одна полезная команда для работы с гигантскими файлами логов:
How to view huge txt files in Linux? [closed]
Closed. This question is seeking recommendations for books, tools, software libraries, and more. It does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
I have got a 4 GiB txt file that I need to view. When I try to open it in Gedit it loads for a while and then crashes. Do you have any ideas for a text editor that I can use to view this file? My OS is Fedora 20.
Stack Overflow is a site for programming and development questions. This question appears to be off-topic because it is not about programming or development. See What topics can I ask about here in the Help Center. Perhaps Software Recommendations Stack Exchange would be a better place to ask.
6 Answers 6
BEHOLD! Since glogg looks unmaintained klogg is better alternative nowadays
Try glogg. It worked great for me.
Not text editors, but in the command line tail -n 100 ./file.txt will give you the last 100 lines of a file, head -n 100 ./file.txt will give you the first 100 lines.
vim in the command line buffers as you read through a file (it doesn’t open it in one go) so it’s quite effective too.
You can install Midnight Commander.
Red Hat, CentOS, Fedora, etc.:
You can start Midnight Commander from the CLI with the mc command. After that you may select and open any file in «view mode» ( F3 ) or in «edit mode» ( F4 ).
mc is much more efficient when opening and browsing large files than vim . I checked it myself.
If you want to watch a very large file in your favorite editor, without worrying about the limitations associated with RAM, I suggest you split the file using the split command:
The above cammand splits the file into 8 parts.
Of course, this solution will only check for some applications. Note that not every file retains its consistency after the division (e.g. XML does not). It all depends on what you want to do with the given file.