Инструменты пользователя

Инструменты сайта


регулярные_выражения

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
регулярные_выражения [2012/02/15 13:19]
val
регулярные_выражения [2017/04/04 13:30]
val [Регулярные выражения]
Строка 1: Строка 1:
 ====== Регулярные выражения ====== ====== Регулярные выражения ======
 +
 +  * [[https://​youtu.be/​BhbDsKetNn8|Видео:​ Про регулярные выражения]]
  
 <​code>​ <​code>​
 $ man re_format $ man re_format
-</​code>​ 
  
-[[http://​ru.wikipedia.org/​wiki/​Регулярное_выражение]]+$ man regex 
 +</code>
  
-[[http://​www.ibm.com/​developerworks/​ru/​library/​l-regexp_1/​]]+  * [[http://​ru.wikipedia.org/​wiki/​Регулярное_выражение|Регулярное выражение]] 
 +  * [[http://​www.ibm.com/​developerworks/​ru/​library/​l-regexp_1/​|Секреты регулярных выражений]] 
 +  * [[Команды фильтры#​grep]]
  
 ===== Символы базовых регулярных выражений ===== ===== Символы базовых регулярных выражений =====
- 
-==== Звездочка -- * -- ==== 
-Означает любое количество символа в строке,​ предшествующего "​звездочке",​ в том числе и нулевое число символов. 
- 
-==== Точка -- . -- ==== 
- ​Означает не менее одного любого символа 
  
 ==== Символ -- ^ -- ====  ==== Символ -- ^ -- ==== 
Строка 29: Строка 27:
 <​code>​ <​code>​
 $ grep '​sh$'​ /etc/passwd $ grep '​sh$'​ /etc/passwd
-root:​*:​0:​0:​Charlie &:/​root:/​bin/​csh 
 </​code>​ </​code>​
  
Строка 40: Строка 37:
 ==== Обратный слеш -- \ -- ====  ==== Обратный слеш -- \ -- ==== 
 Служит для экранирования специальных символов,​ это означает,​ что экранированные символы должны интерпретироваться буквально,​ т.е. как простые символы (в некоторых случаях наоборот). Служит для экранирования специальных символов,​ это означает,​ что экранированные символы должны интерпретироваться буквально,​ т.е. как простые символы (в некоторых случаях наоборот).
 +<​code>​
 +echo 172.16.10.254 gate.isp10.un >> /etc/hosts
 +
 +grep -r "​172\.16\.1\."​ /etc
 +</​code>​
 +
 +==== Экранированные "​угловые скобки"​ -- \<​...\>​ -- ====
  
-==== Экранированные "​угловые скобки"​ -- \<​...\>​ -- ====  
 Отмечают границы слова (не работает в sed). Отмечают границы слова (не работает в sed).
 <​code>​ <​code>​
-grep 'var' /etc/login.conf +grep -R '\<​sed\>​' /usr/share 
-        :​setenv=MAIL=/​var/​mail/​$,​BLOCKSIZE=K,​FTP_PASSIVE_MODE=YES:\ +</​code>​ 
-        :nologin=/​var/​run/​nologin:​\ + 
-# Russian Users Accounts. Setup proper environment variables+==== Звездочка -- * -- ===
-#       :​setenv=MAIL=/​var/​mail/​$,​BLOCKSIZE=K:\ +Означает любое количество символа в строке,​ предшествующего "​звездочке",​ в том числе и нулевое число символов
-#       :​nologin=/​var/​run/​nologin:​\+ 
 +==== Точка -- . -- ==== 
 + 
 +Означает один любой символ
  
-$ grep '​\<​var\>'​ /​etc/​login.conf 
-        :​setenv=MAIL=/​var/​mail/​$,​BLOCKSIZE=K,​FTP_PASSIVE_MODE=YES:​\ 
-        :​nologin=/​var/​run/​nologin:​\ 
-#       :​setenv=MAIL=/​var/​mail/​$,​BLOCKSIZE=K:​\ 
-#       :​nologin=/​var/​run/​nologin:​\ 
-</​code>​ 
 ==== Экранированные "​круглые скобки"​ -- \( \) -- ====  ==== Экранированные "​круглые скобки"​ -- \( \) -- ==== 
 Предназначены для выделения групп регулярных выражений. Они полезны при использовании с оператором "​\|"​ и при извлечении подстроки. Предназначены для выделения групп регулярных выражений. Они полезны при использовании с оператором "​\|"​ и при извлечении подстроки.
 <​code>​ <​code>​
-grep '​daily\|weekly'​ /​etc/​crontab +cat catalog.txt 
-# Perform daily/​weekly/​monthly maintenance+</code><​code>
-1       ​3 ​      ​* ​      ​* ​      ​* ​      ​root ​   periodic daily +
-15      4       ​* ​      ​* ​      ​6 ​      ​root ​   periodic weekly +
- +
-$ grep '​periodic \(daily\|weekly\)' ​/etc/​crontab +
-1       ​3 ​      ​* ​      ​* ​      ​* ​      ​root ​   periodic daily +
-15      4       ​* ​      ​* ​      ​6 ​      ​root ​   periodic weekly +
- +
-$ ls /usr/bin | sed '​s/​\(.*\)/​rm \1/' +
-rm CC +
-rm Mail +
-rm addftinfo +
-... +
-$ ls /usr/bin | sed -n '​s/​\(^a.*\)/​rm \1/​p'​ +
-rm addftinfo +
-rm addr2line +
-rm afmtodit +
-... +
-$ cat catalog.txt ​+
 petrof ivan 234-56-78 petrof ivan 234-56-78
 ivanof sidor 214-56-78 ivanof sidor 214-56-78
-<Ctrl-D> +</​code><​code>
 $ sed '​s/​\(.*\) .* \(.*\)/\1 \2/' catalog.txt $ sed '​s/​\(.*\) .* \(.*\)/\1 \2/' catalog.txt
-petrof 234-56-78 
-ivanof 214-56-78 
 </​code>​ </​code>​
 +
 ==== Экранированные "​фигурные скобки"​ -- \{ \} -- ==== ==== Экранированные "​фигурные скобки"​ -- \{ \} -- ====
 Задают число вхождений предыдущего выражения. Задают число вхождений предыдущего выражения.
Строка 96: Строка 76:
 </​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 ​
Строка 114: Строка 83:
 ivanof 214-56-78 ivanof 214-56-78
 </​code>​ </​code>​
 +
 ===== Символы расширенных регулярных выражений ===== ===== Символы расширенных регулярных выражений =====
  
Строка 129: Строка 99:
 Указывает на то, что предыдущий символ или выражение встречается 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>​
  
регулярные_выражения.txt · Последние изменения: 2017/04/04 13:30 — val