This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
регулярные_выражения [2012/02/15 13:55] val |
регулярные_выражения [2023/01/10 10:43] (current) val [Классы символов POSIX] |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== Регулярные выражения ====== | ====== Регулярные выражения ====== | ||
+ | |||
+ | * [[https://youtu.be/BhbDsKetNn8|Видео: Про регулярные выражения]] | ||
<code> | <code> | ||
$ man re_format | $ man re_format | ||
+ | |||
+ | $ man regex | ||
</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 38: | ||
Служит для экранирования специальных символов, это означает, что экранированные символы должны интерпретироваться буквально, т.е. как простые символы (в некоторых случаях наоборот). | Служит для экранирования специальных символов, это означает, что экранированные символы должны интерпретироваться буквально, т.е. как простые символы (в некоторых случаях наоборот). | ||
<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 50: | ||
</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 76: | ||
</code> | </code> | ||
===== Классы символов POSIX ===== | ===== Классы символов POSIX ===== | ||
- | [:class:] это альтернативный способ указания диапазона символов. | ||
<code> | <code> | ||
- | $ grep '\<[[:alpha:]]\{X\}\>' /etc/login.conf | + | alnum alpha ascii blank cntrl digit graph lower |
- | :ignorenologin:\ | + | print punct space upper word xdigit |
- | # :ignorenologin:\ | + | |
- | # :maxmemorysize-cur=128M:\ | + | |
- | # :refreshperiod@:\ | + | |
- | # :refreshperiod@:\ | + | |
- | + | ||
- | $ grep '\<[A-Za-z]\{X\}\>' /etc/login.conf | + | |
</code> | </code> | ||
- | + | Заменяем в файле catalog.txt некоторые пробелы на TAB | |
- | Заменяем в файле catalog.txt пробел на TAB | + | |
<code> | <code> | ||
$ sed 's/\(.*\)[[:space:]].*[[:space:]]\(.*\)/\1 \2/' catalog.txt | $ sed 's/\(.*\)[[:space:]].*[[:space:]]\(.*\)/\1 \2/' catalog.txt | ||
Line 86: | Line 86: | ||
ivanof 214-56-78 | ivanof 214-56-78 | ||
</code> | </code> | ||
+ | |||
===== Символы расширенных регулярных выражений ===== | ===== Символы расширенных регулярных выражений ===== | ||
Line 101: | Line 102: | ||
Указывает на то, что предыдущий символ или выражение встречается 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> | ||