Пошук у файлах за допомогою команди grep, egrep і fgrep. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Пошук у файлах за допомогою команди grep, egrep і fgrep.



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

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

# grep ^[0-9] guide.txt

1 Introduction to Linux 1

2 Obtaining and Installing Linux 40

3 Linux Tutorial 85

4 System Administration 137

...

# egrep ^ [0-9] guide.txt

1 Introduction to Linux 1

2 Obtaining and Installing Linux 40

3 Linux Tutorial 85

4 System Administration 137

...

# fgrep ^ [0-9] guide.txt

Як видно з наведеного прикладу, grep і egrep повертають результати пошуку (приводяться тільки перші чотири рядки виведення). Оберніть, проте, увагу на те, що fgrep не обробляє регулярних виразів. При роботі з fgrep слід використовувати фіксовані шаблони або рядки, наприклад:

# fgrep friend guide.txt

large extent window manager. This friendly program is in Linux from а friend who may already have software, or share (Unfortunately, system was being unfriendly.)

Тепер скористаємося командою egrep для пошуку в тексті файлу прикладів, в яких зустрічається вираз (b):

# egrep "\([b]\)" guide.txt.

(see Section 1.8 for а list compatible boards), or (b) there is an connect to network, or (b) уоu have а ''dynamic'' IP address

В результаті знайдено два рядки файлу, в точністі відповідну (b). А зараз подивимося, що вийде, якщо застосувати для пошуку програму grep:

# grep "\([b]\)" guide.txt

This is version 2.2.2 book, "Linux Installation and Getting to PostScript printers. This document was generated а set tools from LaTeX source, so there may be а number formatting problems. This is not "official version book"! Please see

Як бачите, команда grep не використовує той же синтаксис, що і команда egrep. В даному випадку можна використовувати більш простий підхід:

# grep "(b)" guide.txt

(see Section 1.8 for а list compatible boards), or (b) there is an connect to network, or (b) уоu have а "dynamic'' IP address

Цей шаблон працює і з grep, і з fgrep. Якщо ви спробуєте застосувати цей шаблон з egrep, ви отримаєте точно такий же результат, як у разі використовування розширеного регулярного виразу з grep (тобто всі рядки, що містять (b)).

Всі програми сімейства grep працюють приблизно з однаковим набором опцій командного рядка. Одна з опцій -n, що часто використовуються, або опція нумерації рядків (line numbering). Ця опція вельми зручна, оскільки дає можливість побачити, які саме рядки файлу містять збіги з шаблоном. Що приводиться нижче приклад застосовний для будь-якої з grep -програм.

# egrep -n "friend" guide.txt

1242: large extent window manager. This friendly program is 1942: сміттю Linux from а friend who may already have software, or 5161: (Unfortunately, system was being unfriendly.)

Як видно з прикладу, збіги знайдені в рядках 1242, 1942 і 5161. Ще одна корисна властивість grep-програм полягає в тому, що вам не потрібно повторювати введення вашого шаблона при кожній спробі виконати пошук. Ось простий приклад. Якщо вам необхідно повторно здійснити пошук різних слів в тексті файлу, ви можете помістити пошуковий запит у файл для його подальшого використовування. Спочатку створіть текстовий файл, а потім для завдання файлу, в якому здійснюватиметься пошук, задайте опцію -f, як в наведеному приклад:

# cat > mywords

wonderful

Typewriter War

# grep -nf mywords guide.txt

574:Typewriter Used to represent screen interaction, as in

617: software since original Space War, or, more recently, Emacs

1998: Now уоu must be convinced how wonderful Linux is, and all

2549:inanimate object is а wonderful way to relieve осcasional

3790: Warning: Linux cannot currently use 33090 sectors

7780: to wear magic hat when it is not needed, despite wonderful

10091: wonderful programs and configurations are available with а bit

Оскільки в прикладі також використовується опція нумерації рядків, повинно бути зрозуміло, що вона повинна задаватися перед опцією -f, або опцією вказівки файлу (f — file), в іншому випадку grep видає повідомлення про те, що не може знайти файл з ім'ям n і завершує роботу.

Можна примусити grep працювати як fgrep за допомогою опції -F, або як egrep за допомогою опції -Е.



Поделиться:


Последнее изменение этой страницы: 2017-02-06; просмотров: 234; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.119.172.146 (0.006 с.)