grep

Команда Linux egrep з прикладами

Команда Linux egrep з прикладами
Команда egrep належить до сімейства команд grep, яка використовується для пошуку шаблонів у Linux. Якщо ви використовували команду grep, egrep працює так само, як grep -E (grep Extended regex '). Egrep сканує певний файл, рядок до рядка, та друкує рядки, які містять рядок пошуку / регулярний вираз. У цій статті ми пояснимо 15 корисних прикладів команд egrep, які допоможуть новачкам і навіть експертам здійснити значущий пошук в LinuxМи виконали ці приклади в системі Debian 10 Buster, але їх можна легко відтворити на більшості дистрибутивів Linux.

Приклад 1: Пошук конкретного рядка у файлі

Це найбільш поширене використання команди egrep. Що ви робите, це те, що ви вказуєте рядок, який ви хочете шукати, та ім’я файлу, яке ви хочете знайти, що рядок у. Потім результат відображає весь рядок, що містить шуканий рядок.

Синтаксис:

$ egrep “search_string” ім’я файлу

Приклад:

$ egrep файл зразка debian.txt

У цьому прикладі я шукав слово “debian” у вказаному текстовому файлі. Ви можете бачити, як результати відображають весь рядок, що містить слово “debian”:

Приклад 2: Пошук конкретного рядка в декількох файлах

За допомогою команди egrep ви можете шукати рядок серед декількох файлів, що знаходяться в одному каталозі. Ви просто повинні бути дещо конкретнішими, надаючи "шаблон" для файлів, що шукаються. Це стане зрозумілішим на прикладі, який ми наведемо.

Синтаксис:

$ egrep "рядок_пошуку" шаблон_назви файлу

Приклад:

Тут ми будемо шукати слово “debian” у всіх .txt-файлів, вказавши шаблон імені файлу таким чином:

$ egrep “debian” *.txt

Команда надрукувала всі рядки, а також імена файлів, що містять слово "debian" з усіх .txt файли в поточному каталозі.

Приклад 3: Рекурсивний пошук рядка у всьому каталозі

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

Синтаксис:

$ egrep -r "рядок_пошуку" *

Приклад:

У цьому прикладі я шукаю слово “зразок” у файлах усього поточного каталогу (Downloads).

$ egrep -r "зразок" *

Результати містять усі рядки, а також імена файлів, що містять слово «зразок» з усіх файлів у каталозі «Завантаження» та його підкаталогах.

Приклад 4: Виконання пошуку без урахування регістру

За допомогою прапора -i ви можете використовувати команду egrep для друку результатів на основі рядка пошуку, не турбуючись про його випадок.

Синтаксис:

$ egrep -i "файл_пошуку" ім'я файлу

Приклад:

Тут я шукаю слово «debian» і хочу, щоб результати відображали всі рядки з файлу, що містять слово «debian» або «Debian, незалежно від його регістру.

$ egrep -i "file_string" ім'я файлу

Ви можете побачити, як прапорець -i допоміг мені отримати всі рядки, що містять рядок пошуку, у випадку "нечутливого" пошуку.

Приклад 5: Пошук рядка як повного слова, а не як підрядка

Коли ви зазвичай шукаєте рядок через egrep, він друкує всі слова, що містять рядок, як підрядок. Наприклад, пошук рядка “on” надрукує всі слова, що містять рядок “on”, наприклад “on”, “only”, “monitor”, “clone” тощо. Якщо ви хочете, щоб результати відображали лише слово «увімкнено» як повне слово, а не як підрядок, ви можете використовувати прапор -w з egrep.

Синтаксис:

$ egrep -w Ім'я файлу "рядок_пошуку"

Приклад:

Тут я шукаю рядок “on” у зразковому файлі:

$ egrep -i “on” зразковий файл.txt

З наведеного вище результату ви можете побачити, що він також містить слово "тільки". Однак це не те, що я хочу, оскільки я шукаю виключно слово "on". Отже, ось команду, яку я використаю замість цього:

$ egrep -iw “on” зразковий файл.txt

Зараз мої результати пошуку включають лише рядки, які містять слово "увімкнено" як ціле слово.

Приклад 6: Друк лише імен файлів, що містять рядок

Іноді ми хочемо отримати лише імена файлів, що містять певний рядок, а не друкувати рядки, що містять його. Це можна зробити, використовуючи прапор -l (нижній регістр L) із командою egrep.

Синтаксис:

$ egrep -l "рядок_пошуку" ім'я_файла_файлу

Приклад:

Тут я шукаю рядок "зразок" у всіх .txt файли в поточному каталозі:

$ egrep -l зразок *.txt

Результати пошуку друкують лише ім'я файлів, що містять зазначений рядок.

Приклад 7: Друк лише пошукового рядка з файлу

Замість друку всього рядка, що містить рядок пошуку, ви можете використовувати команду egrep для друку самого рядка. Рядок буде надруковано стільки разів, коли він з'явиться у вказаному файлі.

Синтаксис:

$ egrep -o "ім'я файлу" рядок пошуку "

Приклад:

У цьому прикладі я шукаю слово “Це” у своєму файлі.

$ egrep -o Цей зразок_файлу.txt

Примітка: Це використання команди стане в нагоді, коли ви шукаєте рядок на основі шаблону регулярного виразу. Ми детально пояснимо регулярні вирази в одному з наступних прикладів.

Приклад 8: Відображення n кількості рядків перед, після або навколо рядка пошуку

Іноді дуже важливо знати контекст у файлі, де використовується певний рядок. Egrep дуже корисний у тому сенсі, що він може використовуватися для відображення рядка, що містить рядок пошуку, а також певної кількості рядків до, після та навколо нього.

Це зразок текстового файлу, який я буду використовувати для пояснення наступних прикладів:

N кількість рядків Після рядка пошуку:

Використовуючи прапор A наступним чином, відобразиться рядок, що містить рядок пошуку та N кількість рядків після нього:

$ egrep -A "search_string" ім'я файлу

Приклад:

$ egrep -A 2 "зразок" зразкового файлу.txt

N кількість рядків Перед рядком пошуку:

Використання прапора B наступним чином відобразить рядок, що містить рядок пошуку та N кількість рядків перед ним:

$ egrep -B "search_string" ім'я файлу

Приклад:

$ egrep -B 2 "зразок" зразкового файлу.txt

N кількість рядків Перед рядком пошуку:

Використовуючи прапор С наступним чином, відобразиться рядок, що містить рядок пошуку, і N кількість рядків до і після нього:

$ egrep -C "search_string" ім'я файлу

Приклад:

$ egrep -C 2 "зразок" зразкового файлу.txt

Приклад 9: Відповідність регулярного виразу у файлах

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

Синтаксис:

$ egrep "Регулярні вирази" ім'я файлу

Давайте пояснимо, як ви можете використовувати регулярні вирази у своєму пошуку egrep:

Оператор повторення Використовуйте
? Попередній пункт раніше ? є необов’язковим і відповідає максимум один раз

* Попередній елемент перед * буде збігатися нуль або більше разів
+ Попередній елемент перед + буде зіставлений один або кілька разів
n Попередній елемент точно узгоджується n кількість разів.
n, Попередній елемент відповідає n або більше разів
, м Попередній елемент відповідає максимум m разів
n, m Попередній пункт відповідає принаймні n разів, але не більше m разів

Приклад:

У наступному прикладі співпадають рядки, що містять такий вираз:

починаючи з "Gnome" і закінчуючи "program"

Приклад 10: Виділення рядка пошуку

Коли ви встановлюєте змінну середовища GREP_OPTIONS, як показано нижче, ви отримуєте результат із рядком пошуку / шаблоном, виділеним у результатах:

$ sudo export GREP_OPTIONS = '- color = auto' GREP_COLOR = '100; 8'

Потім ви можете шукати рядок будь-яким способом, який ми описали в прикладах цієї статті.

Приклад 11: Виконання оберненого пошуку у файлі

Під інвертованим пошуком ми маємо на увазі, що команда egrep друкує все у файлі, крім рядків, що містять рядок пошуку. Ми використаємо наступний зразок файлу для пояснення інвертованого пошуку через egrep. Ми надрукували вміст файлу за допомогою команди cat:

Синтаксис:

$ egrep -v ім'я файлу "рядок_пошуку"

Приклад:

Із зразкового файлу, який ми згадали, ми хочемо опустити рядок, що містить слово „два” у вихідних даних, тому ми будемо використовувати таку команду:

$ egrep -v "два" samplefile_.txt

Ви можете бачити, як вихідні дані містять усе із зразкового файлу, за винятком другого рядка, який містив рядок пошуку "два".

Приклад 12: Виконання оберненого пошуку на основі кількох критеріїв / шаблону пошуку

За допомогою прапора -v ви також можете зробити команду egrep для виконання перевернутого пошуку на основі більш ніж одного рядка / шаблону пошуку.

Для пояснення цього сценарію ми будемо використовувати той самий зразок файлу, який ми згадали в прикладі 11.

Синтаксис:

$ egrep -v -e "рядок_пошуку" / ”шаблон” -e "рядок_пошуку" / ”шаблон”
... ім'я файлу

Приклад:

Зі згаданого зразкового файлу ми хочемо опустити рядки, що містять слова "один" і "два" у вихідних даних, тому будемо використовувати таку команду:

$ egrep -v -e “один” -e “два” samplefile_.txt

Ми надали два слова, які потрібно опустити, використовуючи прапор -e, тому вивід буде виглядати наступним чином:

Приклад 13: Друк кількості рядків, які відповідають рядку пошуку

Замість того, щоб друкувати пошуковий рядок із файлу або рядків, що його містять, ви можете використовувати команду egrep для підрахунку та друку кількості рядків, що відповідають рядку. Цей підрахунок можна отримати за допомогою прапора -c за допомогою команди egrep.

Синтаксис:

$ egrep -c "ім'я файлу пошуку"

Приклад:

У цьому прикладі ми будемо використовувати прапор -c для підрахунку кількості рядків, які містять слово “This” у нашому зразковому файлі:

$ egrep -c "Це" ім'я файлу

Ви також можете скористатися функцією оберненого пошуку тут, щоб підрахувати та надрукувати кількість рядків, які не містять рядок пошуку: 

$ grep -v -c "рядок_пошуку" ім'я файлу

Приклад 14: Відображення номера рядка, де відповідає рядок

За допомогою прапора -n ви можете зробити команду egrep для друку відповідного рядка разом із номером рядка, який містить рядок пошуку.

Синтаксис:

$ grep -n ім'я файлу "рядок_пошуку"

Приклад:

$ grep -n "Це" samplefile_.txt

Ви можете бачити, як номери рядків відображаються на основі результатів пошуку.

Приклад 15: Відображення позиції у файлі, де збігається рядок пошуку

Якщо ви хочете знати позицію у файлі, де існує рядок пошуку, ви можете використовувати прапор -b з командою egrep.

$ grep -o -b "рядок_пошуку" ім'я файлу

Приклад:

$ grep -o -b "Це" samplefile_.txt

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

Emulate Mouse clicks by hovering using Clickless Mouse in Windows 10
Using a mouse or keyboard in the wrong posture of excessive usage can result in a lot of health issues, including strain, carpal tunnel syndrome, and ...
Add Mouse gestures to Windows 10 using these free tools
In recent years computers and operating systems have greatly evolved. There was a time when users had to use commands to navigate through file manager...
Control & manage mouse movement between multiple monitors in Windows 10
Dual Display Mouse Manager lets you control & configure mouse movement between multiple monitors, by slowing down its movements near the border. Windo...