grep
розшифровується як Глобальний пошук регулярних виразів та роздрукувати . Це інструмент командного рядка, який використовується в системах UNIX та Linux для пошуку за вказаним шаблоном у файлі чи групі файлів.
grep
поставляється з великою кількістю опцій, які дозволяють нам виконувати різні дії, пов’язані з пошуком файлів. У цій статті ми розглянемо, як використовувати grep
з доступними опціями, а також базовими регулярними виразами для пошуку файлів.
Як користуватись grep
Не передаючи жодної опції, grep
може використовуватися для пошуку шаблону у файлі або групі файлів. Синтаксис:
grep ''
Зверніть увагу, що навколо тексту потрібні одинарні або подвійні лапки, якщо це більше одного слова.
Ви також можете використовувати підстановочний знак (*), щоб виділити всі файли в каталозі.
Результатом цього є поява шаблону (за рядком, який він знайдений) у файлі (файлах). Якщо збігу немає, на терміналі не буде надруковано вихід.
Наприклад, скажімо, що ми маємо такі файли (які називаються grep.txt):
Hello, how are you I am grep Nice to meet you
Наступна grep
команда буде шукати всі випадки слова "ти":
grep you grep.txt
Результатом цього є:
Hello, how are you Nice to meet you
you
очікується, що колір буде відрізнятися від тексту, щоб легко визначити, що шукали.
Але ми grep
пропонуємо більше опцій, які допомагають нам досягти більшого під час пошукової операції. Давайте розглянемо дев’ять із них, застосовуючи їх до прикладу вище.
Параметри, що використовуються з grep
1. -n
(--line-number) - перелічити номери рядків
Це друкує відповідність тексту разом із номерами рядків. Якщо ви подивитесь на результат, який ми маємо вище, ви помітите, що немає номерів рядків, а лише збіги.
grep you grep.txt -n
Результат:
1: Hello, how are you 3: Nice to meet you
2. -c
(--count) - друкує кількість рядків збігів
grep you grep.txt -c
Результат:
2
Зверніть увагу, що якби на першому рядку було інше "ти", варіант -c
все одно друкував би 2. Це пояснюється тим, що він стосується кількості рядків, де відображаються збіги, а не кількості збігів.
3. -v
(--invert-match) - друкує рядки, які не відповідають вказаному шаблону
grep you grep.txt -v -n
Результат:
2. I am grep
Зверніть увагу, що ми також використовували опцію -n
? Так, ви можете застосувати декілька варіантів в одній команді.
4. -i
(--ignore-case) - використовується для нечутливості до регістру
# command 1 grep You grep.txt # command 2 grep YoU grep.txt -i
Результати:
# result 1 # no result # result 2 Hello, how are you Nice to meet you
5. -l
(--files-with-match) - друк назв файлів, що відповідають шаблону
# command 1 grep you grep.txt -l # command 2 grep You grep.txt -i -l
Результати:
# result 1 grep.txt # result 2 # all files in the current directory that matches # the text 'You' case insensitively
#### 6. `-w` (--word-regexp) - print matches of the whole word
За замовчуванням grep
відповідає рядкам, які містять зазначений шаблон. Це означає, що grep yo grep.txt
будуть надруковані ті самі результати, що й grep yo grep.txt
тому, що у вас можна знайти слово «йо». Подібним чином, "оу".
За допомогою опції -w
, grep
гарантує , що матчі точно по тій же схемі , як зазначено. Приклад:
grep yo grep.txt -w
Результат:
Результату немає!
7. -o
(--lyly-matching) - надрукуйте лише відповідний шаблон
За замовчуванням grep
друкує рядок, де знайдений відповідний шаблон. З додатковою опцією -o
, лише відповідний візерунок друкується рядок за рядком. Приклад:
grep yo grep.txt -o
Результат:
yo
8. -A
(--after-context) та -B
(--before-context) - надрукуйте рядки після і перед (відповідно) відповідним шаблоном
grep grep grep.txt -A 1 -B 1
Результат:
Hello, how are you I am grep Nice to meet you
Цей узгоджений шаблон знаходиться на рядку 2. -A 1
означає один рядок після відповідного рядка і -B 1
означає один рядок перед відповідним рядком.
Існує також параметр -C
(--context), який дорівнює -A
+ -B
. Значення, передане в -C
, буде використовуватися для -A
і -B
.
9. -R
(--dereference-рекурсивний) - рекурсивний пошук
За замовчуванням grep
не може шукати каталоги. Якщо ви спробуєте це зробити, ви отримаєте повідомлення про помилку ("Це каталог"). За допомогою опції -R
стає можливим пошук файлів у каталогах та підкаталогах. Приклад:
grep you .
Результат:
# 'you' matches in a folders # and files starting from the # current directory
Регулярні вирази для шаблонів
grep
також дозволяє основні регулярні вирази для зазначення шаблонів. Два з них:
1. ^pattern
- початок рядка
Цей шаблон означає, що параметр grep
буде відповідати рядкам, рядки яких починаються з рядка, вказаного після ^
. Приклад:
grep ^I grep.txt -n
Результат:
2: I
2. pattern$
- кінець рядка
На відміну від ^
, $
вказує шаблони, які будуть узгоджені, якщо рядок закінчується рядком раніше $
. Приклад:
grep you$ grep.txt
Результат:
1: Hello, how are you 3: Nice to meet you
Загорнути
grep
це потужний інструмент для пошуку файлів у терміналі. Розуміння того, як ним користуватися, дає можливість легко знаходити файли через термінал.
До цього інструменту додано більше варіантів. Ви можете знайти за допомогою man grep
.