Як зробити пошук рядка у файлі

Як зробити пошук за текстом у файлах?

Пошук тексту всередині файлу

  1. У головній панелі інструментів натисніть кнопку Пошук.
  2. Введіть текст для пошуку в полі Містить текст або у списку, що випадає, виберіть один із попередніх виразів для пошуку. …
  3. Вкажіть інші параметри пошуку, наприклад, обмеживши область пошуку заданими типами файлів, та натисніть Знайти.

Як знайти певне слово у файлі?

Пошук тексту у документі

  1. Щоб відкрити область Пошук у режимі редагування, натисніть клавіші CTRL+F або виберіть Головна > Пошук.
  2. Щоб знайти текст, введіть його у поле Пошук у документі…

Як швидко знайти слово у файлі?

Ctrl+F для пошуку слів Запустіть PDFelement і відкрийте файл, натиснувши кнопку "Відкрити файли". Після відкриття файлу натисніть "Ctrl+F", і з'явиться панель повідомлень "Знайти". Ви можете ввести будь-яке слово або фразу в пошуковий рядок і знайти її в документі.

TECH GEEK
Пошук тексту у файлах з командного рядка за допомогою FINDSTR

Пошук слова у файлі

Є файл .txt. У ньому записано текст. Потрібно створити сигнатуру з інформацією (наприклад, a='привіт') і перевірити, чи є ця сигнатура у файлі. Якщо так, то вивести на екран її.

4 відповіді 4

Щоб надрукувати всі рядки, які містять задане слово в даному текстовому файлі, закодованому в utf-8 кодуванні:

#!/usr/bin/env python # -*- coding: utf-8 -*- from __future__ import print_function import io word = u'привіт' with io.open('/path/to/file.txt', encoding = 'utf-8') as file: for line in file: якщо слово в line: print(line, end='') 
  • даний метод закриває вхідний файл ( with -інструкція), не розраховуючи на особливості прибирання сміття в реалізації інтерпретатора або виникнення винятків (помилок)
  • зчитування файлу йде рядково без завантаження всього файлу на згадку
  • підтримуються довільні юнікодні символи (можна інше кодування використовувати в io.open() виклику – вона ніяк не пов'язана з кодуванням вихідного коду)
  • той самий код працює як на Пітоні 2 так і на Пітоні 3.

Команда grep в Linux

Іноді може знадобитися знайти файл, у якому міститься певний рядок або знайти рядок у файлі, де є потрібне слово. У Linux для цього існує кілька утиліт, одна з найбільш використовується це grep. З її допомогою можна шукати не тільки рядки у файлах, але й фільтрувати виведення команд і багато чого ще.

У цій інструкції ми розглянемо, що таке команда grep Linux, детально розберемо синтаксис і можливі опції grep, а також наведемо кілька прикладів роботи з цією утилітою.

Що таке grep?

Назва команди grep розшифровується як "search globally for lines matching the regular expression, and print them". Це одна з найбільш затребуваних команд у терміналі Linux, яка входить до складу проекту GNU. До того як з'явився проект GNU, існувала утиліта попередник grep, тією ж назвою, яка була розроблена в 1973 Кеном Томпсоном для пошуку файлів за вмістом в Unix, а потім вже була розроблена вільна утиліта з тією ж функціональністю в рамках GNU.

Grep дає багато можливостей для фільтрації тексту. Ви можете вибирати потрібні рядки з текстових файлів, відфільтрувати виведення команд і навіть шукати файли у файловій системі, які містять певні рядки.Утиліта дуже популярна, тому що вона вже встановлена ​​в усіх дистрибутивах.

Синтаксис grep

Синтаксис команди виглядає так:

$ grep [опції] шаблон [/шлях/до/файлу/або/папці. ]

$ команда | grep [опції] шаблон

  • Опції – це додаткові параметри, за допомогою яких вказуються різні налаштування пошуку та виводу, наприклад, кількість рядків або режим інверсії.
  • Шаблон – це будь-який рядок або регулярний вираз, за ​​яким виконуватиметься пошук.
  • Ім'я файлу чи папки – це те місце, де виконуватиметься пошук. Як ви побачите далі, grep дозволяє шукати у кількох файлах і навіть у каталозі, використовуючи рекурсивний режим.

Можливість фільтрувати стандартний висновок стане в нагоді, наприклад, коли потрібно вибрати тільки помилки з логів або відфільтрувати тільки необхідну інформацію з виведення будь-якої іншої утиліти.

Опції

Давайте розглянемо основні опції утиліти, які допоможуть більш ефективно виконувати пошук тексту у файлах grep:

  • -E, –extended-regexp – Включити розширений режим регулярних виразів (ERE);
  • -F, –fixed-strings – розглядати шаблон пошуку як звичайний рядок, а не регулярний вираз;
  • -G, –basic-regexp – інтерпретувати шаблон пошуку як базовий регулярний вираз (BRE);
  • -P, –perl-regexp – розглядати шаблон пошуку як регулярний вираз Perl;
  • -e, –regexp – альтернативний спосіб вказати шаблон пошуку, опцію можна використовувати кілька разів, що дозволяє вказати кілька шаблонів для пошуку файлів, що містять один із них;
  • -f, –file – читати шаблон пошуку із файлу;
  • -i, –ignore-case – не враховувати регістр символів;
  • -v, –invert-match – вивести лише ті рядки, в яких шаблон пошуку не знайдено;
  • -w, –word-regexp – шукати шаблон як слово, відокремлене пробілами або іншими розділовими знаками;
  • -x, –line-regexp – шукати шаблон як цілий рядок, від початку до символу перекладу рядка;
  • -c – Вивести кількість знайдених рядків;
  • –color – увімкнути кольоровий режим, доступні значення: never, always та auto;
  • -L, –files-without-match – виводити тільки імена файлів, будуть виведені всі файли, в яких виконується пошук;
  • -l, –files-with-match – аналогічно до попереднього, але будуть виведені тільки файли, в яких є хоча б одне входження;
  • -m, –max-count – зупинити пошук після того, як буде знайдена вказана кількість рядків;
  • -o, –only-matching – відображати тільки частину, що збіглася, замість відображення всього рядка;
  • -h, –no-filename – не виводити ім'я файлу;
  • -q, –quiet – не виводити нічого;
  • -s, –no-messages – не виводити помилки читання файлів;
  • -A, –after-content – показати входження та n рядків після нього;
  • -B, –before-content – показати входження та n рядків перед ним;
  • -C – показати n рядків до та після входження;
  • -a, –text – обробляти двійкові файли як текст;
  • –exclude – пропустити файли імена яких відповідають регулярному виразу;
  • –exclude-dir – пропустити всі файли у зазначеній директорії;
  • -I – Пропускати двійкові файли;
  • –include – шукати лише у файлах, імена яких відповідають регулярному виразу;
  • -r – рекурсивний пошук з усіх підпапок;
  • -R – рекурсивний пошук, включаючи посилання;

Всі основні опції розглянули, тепер давайте перейдемо до прикладів роботи команди grep Linux.

Приклади використання grep

Давайте перейдемо до практики. Спочатку розглянемо кілька основних прикладів пошуку усередині файлів Linux за допомогою grep.

1. Пошук тексту у файлі

У першому прикладі ми шукатимемо інформацію про користувача root у файлі зі списком користувачів Linux /etc/passwd. Для цього виконайте таку команду:

В результаті ви отримаєте щось на кшталт цього:

За допомогою опції -i можна вказати, що регістр символів не потрібно враховувати. Наприклад, давайте знайдемо всі рядки, що містять входження слова time в тому ж файлі:

grep -i "time" /etc/passwd

В цьому випадку Time, time, TIME та інші варіації слова вважатимуться еквівалентними. Ще, ви можете вказати кілька умов пошуку, використовуючи опцію -e. Наприклад:

grep -e "root" -e "daemon" /etc/passwd

За допомогою опції -n можна виводити номер рядка, в якому знайдено входження, наприклад:

grep -n 'root' /etc/passwd

Це все добре працює, поки ваш пошуковий запит не містить спеціальних символів. Наприклад, якщо ви спробуєте знайти всі рядки, які містять символ "[" у файлі /etc/grub/00_header, то отримаєте помилку, що цей регулярний вираз не є вірним. Для того, щоб цього уникнути, потрібно явно вказати, що ви хочете шукати рядок за допомогою опції -F:

grep -F "[" /etc/grub.d/00_header

Тепер ви знаєте як виконується пошук тексту в файлах grep.

2. Фільтрування виведення команди

Для того щоб відфільтрувати виведення іншої команди за допомогою grep достатньо перенаправити його за допомогою оператора |. А файл для самого grep не треба вказувати. Наприклад, щоб знайти всі процеси gnome можна використовувати таку команду:

ps aux | grep "gnome"

В іншому все працює аналогічно.

3. Базові регулярні вирази

Утиліта grep підтримує кілька видів регулярних виразів. Це базові регулярні вирази (BRE), які використовуються за умовчанням та розширені (ERE).Базові регулярні вирази підтримують набір символів, що дозволяють описати кожен певний символ у рядку. Це: ., *, [], [^], ^ і $. Наприклад, ви можете знайти рядки, які читаються на букву r:

grep "^r" /etc/passwd

Або рядки, які містять великі літери:

grep "[A-Z]" /etc/passwd

А так можна знайти всі рядки, які закінчуються на ready у файлі /var/log/dmesg:

grep "ready$" /var/log/dmesg

Але використовуючи базовий синтаксис, ви не можете вказати точну кількість цих символів.

4. Розширені регулярні вирази

На додаток до всіх символів базового синтаксису, в розширеному синтаксисі підтримуються також такі символи:

  • + – одне чи більше повторень попереднього символу;
  • ? – нуль або одне повторення попереднього символу;
  • – Повторення попереднього символу від n до m разів;
  • | – дозволяє об'єднувати кілька патернів.

Для активації розширеного синтаксису необхідно використовувати опцію -E. Наприклад, замість використання опції -e, можна об'єднати кілька слів для пошуку ось так:

grep -E "root|daemon" /etc/passwd

Взагалі, регулярні висловлювання grep – це дуже широка тема, у цій статті я лише показав кілька прикладів. Як ви побачили, пошук тексту у файлах grep стає ще ефективнішим. Але на повне пояснення цієї теми потрібна ціла стаття, тому поки що пропустимо її і підемо далі.

5. Висновок контексту

Іноді буває дуже корисно вивести не лише самий рядок із входженням, а й рядки до та після нього. Наприклад, ми хочемо вибрати всі помилки з лог-файлу, але знаємо, що в наступному рядку після помилки може бути корисна інформація, тоді за допомогою grep відобразимо кілька рядків. Помилки будемо шукати в /var/log/dmesg за шаблоном "Error":

grep -A4 "Error" /var/log/dmesg

Виведе рядок із входженням та 4 рядки після нього:

grep -B4 "Error" /var/log/dmesg

Ця команда виведе рядок із входженням та 4 рядки до неї. А наступна виведе по два рядки з верху та знизу від входження.

grep -C2 "Error" /var/log/dmesg

6. Рекурсивний пошук у grep

До цього ми розглядали пошук у певному файлі чи виведенні команд. Але grep також може виконати пошук тексту у кількох файлах, розміщених в одному каталозі чи підкаталогах. Для цього потрібно використовувати опцію -r. Наприклад, знайдемо всі файли, які містять рядок Kernel в папці /var/log:

grep -r "Kernel" /var/log

Папка з файлами може містити двійкові файли, в яких пошук виконувати зазвичай не потрібно. Для того, щоб їх пропускати, використовуйте опцію -I:

Деякі файли доступні тільки суперкористувачу і для того, щоб виконувати по них пошук вам потрібно запускати grep за допомогою sudo. Або ж ви можете просто приховати повідомлення про помилки читання та пропускати такі файли за допомогою опції -s:

7. Вибір файлів для пошуку

За допомогою опцій –include і –exclude Ви можете фільтрувати файли, які братимуть участь у пошуку. Наприклад, щоб виконати пошук тільки по файлах з розширенням .log в папці /var/log використовуйте таку команду:

grep -r –include="*.log" "Kernel" /var/log

А для того, щоб виключити всі файли з розширенням .journal треба використовувати опцію –exclude:

grep -r –exclude="*.journal" "Kernel" /var/log

8. Пошук слів у grep

Коли ви шукаєте рядок abc, grep виводитиме також kbabc, abc123, aafrabc32 тощо комбінації. Ви можете змусити утиліту шукати за вмістом файлів у Linux рядки, які включають тільки потрібні слова повністю за допомогою опції -w. Наприклад:

grep -w "root" /etc/passwd

9. Кількість рядків

Утиліта grep може повідомити, скільки рядків з певним текстом було знайдено файл. Для цього використовується опція -c (лічильник). Наприклад:

grep -c 'Kernel' /var/log/dmesg

10. Інвертований пошук

Команда grep Linux може бути використана для пошуку рядків, які не містять зазначеного слова. Наприклад, так можна вивести лише ті рядки, які не містять слова nologin:

grep -v nologin /etc/passwd

11. Виведення імен файлів

Ви можете вказати grep виводити лише імена файлів, у яких було хоча б одне входження за допомогою опції -l. Наприклад, наступна команда виведе всі імена файлів з каталогу /var/log, при пошуку за вмістом яких було виявлено входження Kernel:

grep -lr 'Kernel' /var/log/

12. Кольоровий висновок

За промовчанням grep не підсвічуватиме збігу кольором. Але у більшості дистрибутивів прописаний аліас для grep, який це включає. Однак, коли ви використовуєте команду c sudo, це працювати не буде. Для ввімкнення підсвічування вручну використовуйте опцію –color зі значенням always:

sudo grep –color=always root /etc/passwd

Висновки

От і все. Тепер ви знаєте що являє собою команда grep Linux, а також як нею користуватися для пошуку файлів та фільтрації виведення команд. У разі правильного застосування ця утиліта стане потужним інструментом у ваших руках. Якщо у вас залишилися питання, пишіть у коментарях!

Виявили помилку у тексті? Повідомте мені про це. Виділіть текст з помилкою та натисніть Ctrl+Enter.

Related Post

Як правильно подати заяву на заміну посвідчення тракториста-машиністаЯк правильно подати заяву на заміну посвідчення тракториста-машиніста

Посвідчення тракториста-машиніста є важливим документом для сільськогосподарської або будівельної діяльності. Воно підтверджує наявність необхідних навичок та кваліфікації для роботи на спецтехніці. Проте, з часом посвідчення може зноситися чи втрачатися. У

Як зберегти залишок гарбузаЯк зберегти залишок гарбуза

Як правильно зберігати гарбуз? Гарбуз — досить вибагливий овоч, коли це стосується умов для зберігання. Йому подобається прохолода, помірно сухе повітря та темнота. Тому зберігати гарбузи потрібно за температури від

Яка мазь ефективно розсмоктує зовнішній геморой? Відповіді та поради у статтіЯка мазь ефективно розсмоктує зовнішній геморой? Відповіді та поради у статті

Зміст:1 Яка найефективніша мазь від зовнішнього геморою?2 Що добре розсмоктує гемороїдальні вузли?3 Яка мазь розсмоктує гемороїдальні вузли?4 Які ліки розсмоктує геморой? Зовнішній геморой – це розширення вен в області анального