mirror of
https://github.com/Yaslonane/lpic_1-101.git
synced 2026-05-19 09:47:59 +03:00
103 added md
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
**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__);_
|
||||
Reference in New Issue
Block a user