Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
63
Добавлен:
20.04.2015
Размер:
2 Mб
Скачать

3.10. Познакомимся с командой grep

Еще одна команда (grep), связанная с содержимым файлов, позволяет искать в нем некоторую подстроку. Ее имя произошло от Globally find Regular Expressions and Print. Для изучения команды сначала создадим файл file1 следующего содержания (для этого можно воспользоваться командой cat или текстовым редактором vi).

1One

2 One

3 OneFirst

4 One First

5 FirstOne

6 first one

7 one first one

Если выполнить команду

grep One file1

то результат будет таким

1One

2 One

3 OneFirst

4 One First

5 FirstOne

У команды grep есть параметр i, который снимет различие регистров при сравнении. Следующая команда

grep –i One file1

приведет к такому результату (добавились строки 6 и 7).

1One

2 One

3 OneFirst

4 One First

5 FirstOne

6 first one

7 one first one

Еще один параметр w обеспечивает выделение строки поиска с разделителями, например, пробелами. Команда

grep –w One file1

выведет две строки (в которых искомая комбинация символов выделена пробелами).

2 One

4 One First

А такая

grep –iw One file1

четыре строки

2 One

4 One First

6 first one

7 one first one

Создадим второй файл file2 из первого и изменим его. Он должен содержать такие строки.

1One

2One

3 OneFirst

4 One First

5 FirstOne

6 first one

7 Two first one

Изменены строка два (удален пробел) и строка семь (заменено первое слово). Изучаемая команда может искать строку-образец в нескольких файлах.

grep One file1 file2

Эта команда ищет строку-образец в двух файлах и выведет следующее

file1:1One

file1:2 One

file1:3 OneFirst

file1:4 One First

file1:5 FirstOne

file2:1One

file2:2One

file2:3 OneFirst

file2:4 One First

file2:5 FirstOne

Команде grep (как и многим другим утилитам) для поиска подстроки кроме перечисления файлов, можно задать шаблон имени. В следующем примере поиск будет выполнен для всех файлов активного каталога, а строка-образец, заключенная в двойные кавычки, требует вхождения в них двух слов.

grepOne First” *

Везде в содержимом файлов между символьными группами-образцами расставляйте только по одному пробелу.

Команда grep часто используется для выбора некоторой части строк из результата выполнения другой команды. Покажем, как ее используют, например, с командой ps. Ниже приведен пример выбора процессов, связанных с виртуальным терминалом 1.

ps -ef | grep “tty1“

3.11. Познакомимся с командой diff

Научимся использовать команду diff – сравнение файлов. Эта операция выполняется только для двух текстовых файлов. Для ее изучения воспользуемся файлами file1 и file2, созданными в предыдущем пункте.

Если выполнить такую команду

diff file1 file2

то результат будет следующим

2c2

< 2 One

---

> 2one

7c7

< 7 one first one

---

> 7 Two first one

Опцию i изучаемой команды позволяет считать буквы верхнего и нижнего регистра одинаковыми. Если во второй строке файла file2 между 2 и one добавить пробел, а в третьей поставить пробел между One и First, а далее исполнить такую команду

diff -i file1 file2

то результат будет другим (вторые строки файлов будут восприниматься как эквивалентные).

3c3

< 3 OneFirst

---

> 3 One First

7c7

< 7 one first one

---

> 7 Two first one

Но применение опции -w (игнорировать пробелы при сравнении строк)

diff -iw file1 file2

приведет к такому выводу на экран

7c7

< 7 one first one

---

> 7 Two first one

Задание 30.

Это задание надо выполнять в режиме пользователя root.

Создайте файлы listfile1 и listfile2 содержащие списки файлов в двух каталогах: /root и /home/asplinux. Далее с помощью команды diff сравните содержимое этих каталогов.

ls –l /root > listfile1

ls –l /home/asplinux listfill2

diff listfile1 listfill2

Разные опции команды diff позволяют указать, что надо сделать, что бы файлы были одинаковыми. Если этой команде дать только один файл, то сравнение осуществляется со стандартным вводом (т.е. с клавиатурой). Если после строки образца ввести имена трех файлов, то программа сообщает об ошибке.

Среди утилит UNIX имеется еще несколько команд, сравнения файлов, например, diff3 и cmp. Первая позволяет сравнивать три файла, а вторая была предназначена для сравнения бинарных файлов.

Соседние файлы в папке Операционные системы