Печатать все строки, соответствующие регулярному выражению ...
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
;Строки можно расщепить командой подстановки, отделив новую строку:
s/part1part2/part1\part2/
Расщепить строку на две части s/ /\ /g
Расщепить по каждому пробелу. Оставить одно слово на строку
Текущей становится последняя созданная строка.
Чтобы манипулировать не только целыми фрагментами, выбираемыми регулярными выражениями, но и их соответствующими частями, используйте помеченные регулярные выражения: если конструкция
\(...\)
появляется в регулярном выражении, то часть соответствующего ей фрагмента доступна как \1
. Возможно до девяти помеченных выражений, на которые ссылаются с помощью \1
, \2
и т.д.s/\(...\)\(.*\)/\2\1/
Поместить 3 первых символа в конец /\(..*\)\1/
Найти строки, содержащие повторяющиеся смежные цепочки символов
Команды, работающие с файламиКомандам
r
и w
(читать и писать) могут предшествовать номера строк:nr file
Читать file
; добавить его после строки n; текущей становится последняя прочитанная строка m,nw file
Писать строки m-n в file
; положение текущей строки не изменяется m,nw file
Добавить строки m-n к file
; положение текущей строки не изменяется
По умолчанию диапазон для
w
и W
(команда W
приведена ниже в табл. П.1.2) — это целый файл. Значение n по умолчанию для r
равно $,
что представляется не очень удачным. Будьте внимательны.Редактор
ed
запоминает первое использованное имя файла из командной строки или из команд r
, w
. Команда f