This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
регулярные_выражения [2012/02/15 13:55] val |
регулярные_выражения [2017/02/22 11:41] val [Точка -- . --] |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== Регулярные выражения ====== | ====== Регулярные выражения ====== | ||
+ | |||
+ | * [[https://youtu.be/BhbDsKetNn8|Видео: Про регулярные выражения]] | ||
<code> | <code> | ||
Line 5: | Line 7: | ||
</code> | </code> | ||
- | [[http://ru.wikipedia.org/wiki/Регулярное_выражение]] | + | * [[http://ru.wikipedia.org/wiki/Регулярное_выражение|Регулярное выражение]] |
- | + | * [[http://www.ibm.com/developerworks/ru/library/l-regexp_1/|Секреты регулярных выражений]] | |
- | [[http://www.ibm.com/developerworks/ru/library/l-regexp_1/]] | + | * [[Команды фильтры#grep]] |
===== Символы базовых регулярных выражений ===== | ===== Символы базовых регулярных выражений ===== | ||
- | |||
- | ==== Звездочка -- * -- ==== | ||
- | Означает любое количество символа в строке, предшествующего "звездочке", в том числе и нулевое число символов. | ||
- | |||
- | ==== Точка -- . -- ==== | ||
- | Означает не менее одного любого символа | ||
==== Символ -- ^ -- ==== | ==== Символ -- ^ -- ==== | ||
Line 40: | Line 36: | ||
Служит для экранирования специальных символов, это означает, что экранированные символы должны интерпретироваться буквально, т.е. как простые символы (в некоторых случаях наоборот). | Служит для экранирования специальных символов, это означает, что экранированные символы должны интерпретироваться буквально, т.е. как простые символы (в некоторых случаях наоборот). | ||
<code> | <code> | ||
- | grep 'bin\/sh' /etc/passwd | + | echo 172.16.10.254 gate.isp10.un >> /etc/hosts |
+ | |||
+ | grep -r "172\.16\.1\." /etc | ||
</code> | </code> | ||
Line 50: | Line 48: | ||
</code> | </code> | ||
- | ==== Экранированные "круглые скобки" -- \( \) -- и классы символов ==== | + | ==== Звездочка -- * -- ==== |
+ | Означает любое количество символа в строке, предшествующего "звездочке", в том числе и нулевое число символов. | ||
+ | |||
+ | ==== Точка -- . -- ==== | ||
+ | Означает один любой символа | ||
+ | |||
+ | ==== Экранированные "круглые скобки" -- \( \) -- ==== | ||
Предназначены для выделения групп регулярных выражений. Они полезны при использовании с оператором "\|" и при извлечении подстроки. | Предназначены для выделения групп регулярных выражений. Они полезны при использовании с оператором "\|" и при извлечении подстроки. | ||
<code> | <code> | ||
- | $ cat catalog.txt | + | $ cat catalog.txt |
- | petrof ivan 234-56-78 | + | </code><code> |
- | ivanof sidor 214-56-78 | + | petrof ivan 234-56-78 |
- | + | ivanof sidor 214-56-78 | |
- | sed 's/\([[:alnum:]]*\)[[:space:]]*[[:alnum:]]*[[:space:]]*\([[:alnum:]]*\)/\1 \2/' catalog.txt | + | </code><code> |
+ | $ sed 's/\(.*\) .* \(.*\)/\1 \2/' catalog.txt | ||
</code> | </code> | ||
Line 68: | Line 73: | ||
</code> | </code> | ||
===== Классы символов POSIX ===== | ===== Классы символов POSIX ===== | ||
- | [:class:] это альтернативный способ указания диапазона символов. | ||
- | <code> | ||
- | $ grep '\<[[:alpha:]]\{X\}\>' /etc/login.conf | ||
- | :ignorenologin:\ | ||
- | # :ignorenologin:\ | ||
- | # :maxmemorysize-cur=128M:\ | ||
- | # :refreshperiod@:\ | ||
- | # :refreshperiod@:\ | ||
- | $ grep '\<[A-Za-z]\{X\}\>' /etc/login.conf | + | Заменяем в файле catalog.txt некоторые пробелы на TAB |
- | </code> | + | |
- | + | ||
- | Заменяем в файле catalog.txt пробел на TAB | + | |
<code> | <code> | ||
$ sed 's/\(.*\)[[:space:]].*[[:space:]]\(.*\)/\1 \2/' catalog.txt | $ sed 's/\(.*\)[[:space:]].*[[:space:]]\(.*\)/\1 \2/' catalog.txt | ||
Line 86: | Line 80: | ||
ivanof 214-56-78 | ivanof 214-56-78 | ||
</code> | </code> | ||
+ | |||
===== Символы расширенных регулярных выражений ===== | ===== Символы расширенных регулярных выражений ===== | ||
Line 101: | Line 96: | ||
Указывает на то, что предыдущий символ или выражение встречается 1 или более раз (добавляем произвольное количество символов разделителей в файл catalog.txt). | Указывает на то, что предыдущий символ или выражение встречается 1 или более раз (добавляем произвольное количество символов разделителей в файл catalog.txt). | ||
<code> | <code> | ||
- | $ sed -E 's/([[:alpha:]]+)[[:space:]]+.*[[:space:]]+([[:alpha:]]*)/\1 \2/' catalog.txt | + | $ sed -E 's/([[:alnum:]]+)[[:space:]]+[[:alnum:]]+[[:space:]]+([[:alnum:]]+)/\1 \2/' catalog.txt |
petrof 234-56-78 | petrof 234-56-78 | ||
ivanof 214-56-78 | ivanof 214-56-78 | ||
</code> | </code> | ||