Синтаксис sed

Это формат синтаксиса, описанный в стандарте "Unix sed utility in IEEE Std 1003.1-2001, Portable Operating SystemInterface (POSIX ), Shells and Utilities".

Специальные символы совпадения

^
начало строки
$
конец строки
.
любой символ
*
предыдущее значение повторяется 0 или более раз
+
предыдущее значение повторяется 1 или более раз
{N}
предыдущее значение повторяется ровно N раз
{N,M}
предыдущее значение повторяется от N до M раз
[[:alnum:]]
     060 ``0''      061 ``1''      062 ``2''      063 ``3''      064 ``4''
     065 ``5''      066 ``6''      067 ``7''      070 ``8''      071 ``9''
     101 ``A''      102 ``B''      103 ``C''      104 ``D''      105 ``E''
     106 ``F''      107 ``G''      110 ``H''      111 ``I''      112 ``J''
     113 ``K''      114 ``L''      115 ``M''      116 ``N''      117 ``O''
     120 ``P''      121 ``Q''      122 ``R''      123 ``S''      124 ``T''
     125 ``U''      126 ``V''      127 ``W''      130 ``X''      131 ``Y''
     132 ``Z''      141 ``a''      142 ``b''      143 ``c''      144 ``d''
     145 ``e''      146 ``f''      147 ``g''      150 ``h''      151 ``i''
     152 ``j''      153 ``k''      154 ``l''      155 ``m''      156 ``n''
     157 ``o''      160 ``p''      161 ``q''      162 ``r''      163 ``s''
     164 ``t''      165 ``u''      166 ``v''      167 ``w''      170 ``x''
     171 ``y''      172 ``z''
[[:alpha:]]
     101 ``A''      102 ``B''      103 ``C''      104 ``D''      105 ``E''
     106 ``F''      107 ``G''      110 ``H''      111 ``I''      112 ``J''
     113 ``K''      114 ``L''      115 ``M''      116 ``N''      117 ``O''
     120 ``P''      121 ``Q''      122 ``R''      123 ``S''      124 ``T''
     125 ``U''      126 ``V''      127 ``W''      130 ``X''      131 ``Y''
     132 ``Z''      141 ``a''      142 ``b''      143 ``c''      144 ``d''
     145 ``e''      146 ``f''      147 ``g''      150 ``h''      151 ``i''
     152 ``j''      153 ``k''      154 ``l''      155 ``m''      156 ``n''
     157 ``o''      160 ``p''      161 ``q''      162 ``r''      163 ``s''
     164 ``t''      165 ``u''      166 ``v''      167 ``w''      170 ``x''
     171 ``y''      172 ``z''
[[:blank:]]
     “\t”    “ ”
[[:cntrl:]]
     000 NUL        001 SOH        002 STX        003 ETX        004 EOT
     005 ENQ        006 ACK        007 BEL        010 BS         011 HT
     012 NL         013 VT         014 NP         015 CR         016 SO
     017 SI         020 DLE        021 DC1        022 DC2        023 DC3
     024 DC4        025 NAK        026 SYN        027 ETB        030 CAN
     031 EM         032 SUB        033 ESC        034 FS         035 GS
     036 RS         037 US         177 DEL
[[:digit:]]
     ``0''         ``1''         ``2''         ``3''         ``4''
     ``5''         ``6''         ``7''         ``8''         ``9''
[[:graph:]]
     041 ``!''      042 ``"''      043 ``#''      044 ``$''      045 ``%''
     046 ``&''      047 ``'''      050 ``(''      051 ``)''      052 ``*''
     053 ``+''      054 ``,''      055 ``-''      056 ``.''      057 ``/''
     060 ``0''      061 ``1''      062 ``2''      063 ``3''      064 ``4''
     065 ``5''      066 ``6''      067 ``7''      070 ``8''      071 ``9''
     072 ``:''      073 ``;''      074 ``<''      075 ``=''      076 ``>''
     077 ``?''      100 ``@''      101 ``A''      102 ``B''      103 ``C''
     104 ``D''      105 ``E''      106 ``F''      107 ``G''      110 ``H''
     111 ``I''      112 ``J''      113 ``K''      114 ``L''      115 ``M''
     116 ``N''      117 ``O''      120 ``P''      121 ``Q''      122 ``R''
     123 ``S''      124 ``T''      125 ``U''      126 ``V''      127 ``W''
     130 ``X''      131 ``Y''      132 ``Z''      133 ``[''      134 ``\''
     135 ``]''      136 ``^''      137 ``_''      140 ```''      141 ``a''
     142 ``b''      143 ``c''      144 ``d''      145 ``e''      146 ``f''
     147 ``g''      150 ``h''      151 ``i''      152 ``j''      153 ``k''
     154 ``l''      155 ``m''      156 ``n''      157 ``o''      160 ``p''
     161 ``q''      162 ``r''      163 ``s''      164 ``t''      165 ``u''
     166 ``v''      167 ``w''      170 ``x''      171 ``y''      172 ``z''
     173 ``{''      174 ``|''      175 ``}''      176 ``~''
[[:lower:]]
     141 ``a''      142 ``b''      143 ``c''      144 ``d''      145 ``e''
     146 ``f''      147 ``g''      150 ``h''      151 ``i''      152 ``j''
     153 ``k''      154 ``l''      155 ``m''      156 ``n''      157 ``o''
     160 ``p''      161 ``q''      162 ``r''      163 ``s''      164 ``t''
     165 ``u''      166 ``v''      167 ``w''      170 ``x''      171 ``y''
     172 ``z''
[[:print:]]
     040 sp         041 ``!''      042 ``"''      043 ``#''      044 ``$''
     045 ``%''      046 ``&''      047 ``'''      050 ``(''      051 ``)''
     052 ``*''      053 ``+''      054 ``,''      055 ``-''      056 ``.''
     057 ``/''      060 ``0''      061 ``1''      062 ``2''      063 ``3''
     064 ``4''      065 ``5''      066 ``6''      067 ``7''      070 ``8''
     071 ``9''      072 ``:''      073 ``;''      074 ``<''      075 ``=''
     076 ``>''      077 ``?''      100 ``@''      101 ``A''      102 ``B''
     103 ``C''      104 ``D''      105 ``E''      106 ``F''      107 ``G''
     110 ``H''      111 ``I''      112 ``J''      113 ``K''      114 ``L''
     115 ``M''      116 ``N''      117 ``O''      120 ``P''      121 ``Q''
     122 ``R''      123 ``S''      124 ``T''      125 ``U''      126 ``V''
     127 ``W''      130 ``X''      131 ``Y''      132 ``Z''      133 ``[''
     134 ``\''      135 ``]''      136 ``^''      137 ``_''      140 ```''
     141 ``a''      142 ``b''      143 ``c''      144 ``d''      145 ``e''
     146 ``f''      147 ``g''      150 ``h''      151 ``i''      152 ``j''
     153 ``k''      154 ``l''      155 ``m''      156 ``n''      157 ``o''
     160 ``p''      161 ``q''      162 ``r''      163 ``s''      164 ``t''
     165 ``u''      166 ``v''      167 ``w''      170 ``x''      171 ``y''
     172 ``z''      173 ``{''      174 ``|''      175 ``}''      176 ``~''
[[:punct:]]
     041 ``!''      042 ``"''      043 ``#''      044 ``$''      045 ``%''
     046 ``&''      047 ``'''      050 ``(''      051 ``)''      052 ``*''
     053 ``+''      054 ``,''      055 ``-''      056 ``.''      057 ``/''
     072 ``:''      073 ``;''      074 ``<''      075 ``=''      076 ``>''
     077 ``?''      100 ``@''      133 ``[''      134 ``\''      135 ``]''
     136 ``^''      137 ``_''      140 ```''      173 ``{''      174 ``|''
     175 ``}''      176 ``~''
[[:space:]]
     ``\t''   ``\n''    ``\v''    ``\f''    ``\r''    `` ''
[[:upper:]]
     101 ``A''      102 ``B''      103 ``C''      104 ``D''      105 ``E''
     106 ``F''      107 ``G''      110 ``H''      111 ``I''      112 ``J''
     113 ``K''      114 ``L''      115 ``M''      116 ``N''      117 ``O''
     120 ``P''      121 ``Q''      122 ``R''      123 ``S''      124 ``T''
     125 ``U''      126 ``V''      127 ``W''      130 ``X''      131 ``Y''
     132 ``Z''
[[:xdigit:]]
     ``0''         ``1''         ``2''         ``3''         ``4''
     ``5''         ``6''         ``7''         ``8''         ``9''
     ``A''         ``B''         ``C''         ``D''         ``E''
     ``F''         ``a''         ``b''         ``c''         ``d''
     ``e''         ``f''

Для использования специальных символов как обычной строки нужно их экранировать '\'.
Например, '\+'.

Специальные символы подстановки

&
вся исходная строка
\1
1 совпавший атом

Примеры

искать заменить результат
^011.*
777
номер вида 011XXXXX будет заменен на номер 777
^011
7
номер вида 011XXXXXXX будут преобразован в вид 7XXXXXXX
.*
00&
всем номерам будет добавлен префикс 00.
& - означает "подставить исходную строку"
^011
будет обрезаться префикс 011
^(8)(.{10})$
7\2
номер вида 8ХХХХХХХХХХ будет заменен на 7ХХХХХХХХХ.
Все номера, которые содержат меньше или больше 11 цифр не попадут под это правило.
Исходный номер делится на 2 "атома" - цифра 8 и 10 оставшихся цифр.
\2 - означает, что подставляется второй "атом" - 10 цифр после исходной цифры 8
(^.*)(.{2}$)
749511111\2
запоминаются 2 последние цифры исходного номера и они добавляются к номеру в поле "заменить".
Таким образом, если исходный номер был 444455, то результатом будет номер 74951111155
.*
&
любое значение пройдет без изменений.
& - означает "подставить исходную строку"
^[[:digit:]]*$
&
цифровой номер пройдет без изменений.
& - означает "подставить исходную строку"
^\+
будет обрезаться префикс '+'.
'^' - обозначает начало строки.
'\' - символ экранирования специального символа
.*
\+&
будет добавляться префикс '+'.
'\' - символ экранирования специального символа.
'&' - означает "подставить исходную строку"

English translation