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 наиболее часто используется для печати, подстановки или удаления множества строк:
<i>m</i>,<i>n</i>g/re/cmd Для всех строк между m и n, которые соответствуют re выполнить cmd <i>m</i>,<i>n</i>v/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/.../cmd1cmd2cmd3 Выполнять составные команды с единственной g, присоединить к каждой cmd кроме последней