**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__);_