103.7 Поиск информации при помощи регулярных выражений
Студент должен уметь осуществлять поиск необходимых файлов и информации внутри них.
Изучаем :
- создание простых регулярных выражений;
- инструменты, опирающиеся на эти выражения, для поиска файлов.
**Термины и утилиты: **
- grep
- egrep
- fgrep
- rgrep
- sed
- регулярные выражения.
Частой задачей в Linux является поиск необходимых файлов и сортировка информации внутри них. Для этой задачи служат регулярные выражения – специальный язык поиска и изменения информации, обладающий своим синтаксисом.
При отборе информации можно использовать стандартные групповые символы:
- ^ _ - начало строки;_
- **$ ** _ - конец строки;_
- **. ** _ - любой символ;_
- <** a **** ** - слово, начинающееся с " a";
- >** a **** ** - c лово, заканчивающееся на " a_";_
- a** - z ] **** -** диапазон от " a" до " z";
- [^t]** **** -** не буква " t";
- a|z** **** -** " a" или " z " ;
- и т.д.;
Для простой сортировки набора строк используется команда grep , например:
grep** oo file. **txt (отобразить в файле текст с двумя буквы « o » подряд);
ls | grep** ile** (вывести названия содержимого каталога с набором символов ' ile');
grep** ple $ file. **txt (отобразить в файле file . txt строки, заканчивающиеся на ' ple');
Для расширенной сортировки и поиска по сложным регулярным выражениям используется команда egrep (также можно использовать grep -** E**), например:
egrep '^(b | d)' file**. **txt (все строки, что начинаются с " b" или " d");
egrep '^[a - k]' file**. **txt (все строки, что начинаются с " a" по " k");
Для быстрой сортировки и поиска по набору символов без регулярных выражений используется команда fgrep (также можно использовать grep -** F**), например:
fgrep** c $ file. **txt _ (отобразить в_ file . txt последовательность символов " c $");
Для рекурсивной (включая вложенные каталоги и файлы) сортировки и поиска по набору символов используется команда rgrep (также можно использовать grep -** R**), например:
rgrep ** **** word**_ (вывести позиции содержащие « word » в текущем и всех вложенных каталогах__);_
Для изменения текстового потока согласно заданным правилам используется редактор sed, например:
sed –** e ****' s / oo / aa /' file. **txt (заменить в file . txt все " oo" на " aa" );
sed –** re ****' s /^( B | b )/ C' file. txt > newfile. **txt (в строках, начинающихся с « B » или « b », заменить первую букву на «С» и сохранить результат в newfile . txt_);_