Синтаксис 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:]]*$ |
& |
цифровой номер пройдет без изменений. & - означает "подставить исходную строку" |
^\+ |
будет обрезаться префикс '+'. '^' - обозначает начало строки. '\' - символ экранирования специального символа |
|
.* |
\+& |
будет добавляться префикс '+'. '\' - символ экранирования специального символа. '&' - означает "подставить исходную строку" |