UNIX — универсальная среда программирования
Шрифт:
Таблица П.1.1: Регулярные выражения редактора
Символу перевода строки не соответствует ни одно регулярное выражение.
Образец | Соответствие |
---|---|
/^$/ | пустая строка, т.е. только конец строки |
/./ | непустая, т.е. по крайней мере один символ |
/^/ | все строки |
/thing/ | thing где либо в строке |
/^thing/ | thing в начале строки |
/thing$/ | thing в конце строки |
/^thing$/ | строка,
thing |
/thing.$/ | thing плюс любой символ в конце строки |
/thing\.$/ | thing. в конце строки |
/\/thing\// | /thing/ где либо в строке |
/[tT]hing/ | thing или Thing где либо в строке |
/thing[0-9]/ | thing , за которой одна цифра |
/thing[^0-9]/ | thing , за которой не цифра |
/thing[0-9][^0-9]/ | thing , за которой цифра и не цифра |
/thing1.*thing2/ | thing1 , затем любая строка, затем thing2 |
/^thing1.*thing2$/ | thing1 в начале и thing2 в конце |
Регулярные выражения, использующие
*
, выбирают самое левое совпадение с образцом до тех пор, пока это возможно. Отметим, что x*
может соответствовать нулю, а xx*
одному или более символу. Глобальные команды
Глобальные команды
g
и v
управляют вызовом одной или большего числа других команд, выполняющих преобразования в множестве строк, выбранных регулярным выражением. Команда g
наиболее часто используется для печати, подстановки или удаления множества строк: m,ng/re/cmd | Для всех строк между m и n, которые соответствуют re выполнить cmd |
m,nv/re/cmd | Для всех строк между m и n, которые не соответствуют re выполнить cmd |
Командам
g
и v
могут предшествовать номера строк, ограничивающие диапазон; по умолчанию принимается диапазон 1,$
: g/.../p | Печатать все строки, соответствующие регулярному выражению ... |
g/.../d | Убрать все строки соответствующие ... |
g/.../s//repl/p | Заменить первое вхождение ... в каждой строке на 'repl ', печатать измененные строки |
g/.../s//repl/gp | Заменить каждое ... на 'repl ' , печатать измененные строки |
g/.../s/pat/repl/ | В строках, соответствующих ... , заменить первую 'pat ' на 'repl ' |
g/.../s/pat/repl/p | В строках, соответствующих ... , заменить первую 'pat ' на 'repl ' и печатать |
g/.../s/pat/repl/gp | В строках, соответствующих ... , заменить все 'pat ' на 'repl ' и печатать |
v/.../s/pat/repl/gp | В строках, не соответствующих ... , заменить все 'pat ' на 'repl ' и печатать |
v/^$/p | Печатать
|
g/.../cmd1\cmd2\cmd3 | Выполнять составные команды с единственной g , присоединить \ к каждой cmd кроме последней |
Команды, управляемые командами
g
или v
, также могут использовать номера строк, текущая строка настраивается по очереди на каждую выбранную строку: g/thing/.,.+1р | Печатать каждую строку с thing и следующую |
g/^\.EQ/.1, /^\.EN/s/alpha/beta/gp | Заменять alpha на beta только между .EQ и .EN и печатать измененные строки |
Перемещение и копирование строк
Команда
m
перемещает группу смежных строк, а команда t
копирует группу строк: m,n,md | Переместить строки m по n за строку d |
m,n,td | Скопировать строки m по n за строку d |
Если исходные строки не определены, используется текущая строка. Строка назначения
d
не может быть в диапазоне m,n-1
. Ниже приведено несколько общих идиом, включающих m
и t
. m+ | Поместить текущую строку после следующей (переставить) |
m-2 | Поместить текущую строку перед предыдущей |
m-- | То же самое: это то же, что – 2 |
m- | Ничего не делать |
m$ | Поместить текущую строку в конец ( m0 — поместить в начало) |
t. | Дублировать текущую строку ( t$ дублирует в конце) |
– ,.t. | Дублировать предыдущую и текущую строки |
1,$t$ | Дублировать все множество строк |
g/^/m0 | Инвертировать порядок строк |
Метки и номера строк
Команда
=
печатает номер строки $
(слабое умолчание), .=
печатает номер текущей строки и т.д. Положение текущей строки не изменяется. Команда
kc
метит нужную строку буквой с
; впоследствии на эту строку можно ссылаться с помощью 'c
. Команда k
не меняет положение текущей строки. Метки удобны при перемещении больших фрагментов текста, поскольку они остаются привязанными к строкам, как показано в приведенной ниже последовательности: /.../ka | Найти строку ... и пометить буквой a |
/.../kb | Найти строку ... и пометить буквой b |
'a,'bp | Печатать целый диапазон, чтобы быть уверенным |
/.../ | Найти нужную строку |
'а,'bm | Поместить выбранные строки после нее |
Объединение, расщепление и реорганизация строк
Строки могут быть объединены с помощью команды
j
(пробелы не добавляются): m,nj | объединяет строки с m по n в одну |
jp | Объединить текущую строку со следующей и печатать |
– ,.jp | Объединить предыдущую строку с текущей и печатать |
Поделиться:
Популярные книги
Сын Тишайшего
1. Царь Федя
Фантастика:
попаданцы
альтернативная история
фэнтези
5.20
рейтинг книги
"Искажающие реальность" Компиляция. Книги 1-14
Искажающие реальность
Фантастика:
боевая фантастика
космическая фантастика
киберпанк
рпг
5.00
рейтинг книги
Школа. Первый пояс
2. Путь
Фантастика:
фэнтези
7.67
рейтинг книги
Невеста на откуп
2. Невеста на откуп
Фантастика:
фэнтези
5.83
рейтинг книги
Убивать чтобы жить 2
2. УЧЖ
Фантастика:
героическая фантастика
боевая фантастика
рпг
5.00
рейтинг книги
Вперед в прошлое!
1. Вперед в прошлое
Фантастика:
попаданцы
5.00
рейтинг книги
Аргумент барона Бронина 4
4. Аргумент барона Бронина
Фантастика:
попаданцы
аниме
сказочная фантастика
фэнтези
5.00
рейтинг книги
Измена. (Не)любимая жена олигарха
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Измена. Право на обман
2. Измены
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Бастард Императора. Том 7
7. Бастард Императора
Фантастика:
городское фэнтези
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Жаба с кошельком
19. Любительница частного сыска Даша Васильева
Детективы:
иронические детективы
8.26
рейтинг книги
Бастард Императора. Том 11
11. Бастард Императора
Фантастика:
городское фэнтези
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Академия чаросвет. Тень
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Наследие Маозари 4
4. Наследие Маозари
Фантастика:
фэнтези
попаданцы
5.00