This is an old revision of the document!
$ man re_format
Означает любое количество символа в строке, предшествующего “звездочке”, в том числе и нулевое число символов.
Означает не менее одного любого символа
Означает начало строки, но иногда, в зависимости от контекста, означает отрицание в регулярных выражениях.
$ grep '^s' /etc/passwd sshd:*:22:22:Secure Shell Daemon:/var/empty:/usr/sbin/nologin smmsp:*:25:25:Sendmail Submission User:/var/spool/clientmqueue:/usr/sbin/nologin
В конце регулярного выражения соответствует концу строки.
$ grep 'sh$' /etc/passwd
Предназначены для задания подмножества символов. Квадратные скобки, внутри регулярного выражения, считаются одним символом, который может принимать значения, перечисленные внутри этих скобок. Метасимвол ^ означает отрицание множества
$ grep '^[rs]' /etc/passwd
Служит для экранирования специальных символов, это означает, что экранированные символы должны интерпретироваться буквально, т.е. как простые символы (в некоторых случаях наоборот).
grep 'bin\/sh' /etc/passwd
Отмечают границы слова (не работает в sed).
grep -R '\<sed\>' /usr/share
Предназначены для выделения групп регулярных выражений. Они полезны при использовании с оператором “\|” и при извлечении подстроки.
$ cat catalog.txt <code> petrof ivan 234-56-78 ivanof sidor 214-56-78
$ sed 's/\([[:alnum:]]*\)[[:space:]]*[[:alnum:]]*[[:space:]]*\([[:alnum:]]*\)/\1 \2/' catalog.txt
Задают число вхождений предыдущего выражения.
$ grep '\(ro.*\)\{2\}' /etc/passwd root:*:0:0:Charlie &:/root:/bin/csh daemon:*:1:1:Owner of many system processes:/root:/usr/sbin/nologin
[:class:] это альтернативный способ указания диапазона символов.
$ grep '\<[[:alpha:]]\{X\}\>' /etc/login.conf :ignorenologin:\ # :ignorenologin:\ # :maxmemorysize-cur=128M:\ # :refreshperiod@:\ # :refreshperiod@:\ $ grep '\<[A-Za-z]\{X\}\>' /etc/login.conf
Заменяем в файле catalog.txt пробел на TAB
$ sed 's/\(.*\)[[:space:]].*[[:space:]]\(.*\)/\1 \2/' catalog.txt petrof 234-56-78 ivanof 214-56-78
Многие символы экранируемые в базовых выражениях – () {} | – но не – <> – используются без экранирования.
Означает, что предыдущий символ или регулярное выражение встречается 0 или 1 раз.
$ grep -E '^r?o' /etc/passwd root:*:0:0:Charlie &:/root:/bin/csh operator:*:2:5:System &:/:/usr/sbin/nologin
Указывает на то, что предыдущий символ или выражение встречается 1 или более раз (добавляем произвольное количество символов разделителей в файл catalog.txt).
$ sed -E 's/([[:alpha:]]+)[[:space:]]+.*[[:space:]]+([[:alpha:]]*)/\1 \2/' catalog.txt petrof 234-56-78 ivanof 214-56-78