Files
Kirill Semaev 321aabe33b build flow
2018-04-15 14:43:14 +03:00

59 lines
4.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
**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__);_