mirror of
https://github.com/Yaslonane/lpic_1-101.git
synced 2026-05-19 17:48:32 +03:00
59 lines
4.6 KiB
Markdown
59 lines
4.6 KiB
Markdown
**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__);_ |