Чтение онлайн

на главную - закладки

Жанры

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
рейтинг книги
Искажающие реальность Компиляция. Книги 1-14

Школа. Первый пояс

Игнатов Михаил Павлович
2. Путь
Фантастика:
фэнтези
7.67
рейтинг книги
Школа. Первый пояс

Невеста на откуп

Белецкая Наталья
2. Невеста на откуп
Фантастика:
фэнтези
5.83
рейтинг книги
Невеста на откуп

Убивать чтобы жить 2

Бор Жорж
2. УЧЖ
Фантастика:
героическая фантастика
боевая фантастика
рпг
5.00
рейтинг книги
Убивать чтобы жить 2

Вперед в прошлое!

Ратманов Денис
1. Вперед в прошлое
Фантастика:
попаданцы
5.00
рейтинг книги
Вперед в прошлое!

Аргумент барона Бронина 4

Ковальчук Олег Валентинович
4. Аргумент барона Бронина
Фантастика:
попаданцы
аниме
сказочная фантастика
фэнтези
5.00
рейтинг книги
Аргумент барона Бронина 4

Измена. (Не)любимая жена олигарха

Лаванда Марго
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Измена. (Не)любимая жена олигарха

Измена. Право на обман

Арская Арина
2. Измены
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Измена. Право на обман

Бастард Императора. Том 7

Орлов Андрей Юрьевич
7. Бастард Императора
Фантастика:
городское фэнтези
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Бастард Императора. Том 7

Жаба с кошельком

Донцова Дарья
19. Любительница частного сыска Даша Васильева
Детективы:
иронические детективы
8.26
рейтинг книги
Жаба с кошельком

Бастард Императора. Том 11

Орлов Андрей Юрьевич
11. Бастард Императора
Фантастика:
городское фэнтези
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Бастард Императора. Том 11

Академия чаросвет. Тень

Ярошинская Ольга
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Академия чаросвет. Тень

Наследие Маозари 4

Панежин Евгений
4. Наследие Маозари
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Наследие Маозари 4