Основанное на регулярных выражениях соответствие и sustitution с нано?
Я в курсе nano
Функция поиска и замены, но способна ли она использовать регулярные выражения для сопоставления и подстановки (особенно для подстановок, использующих часть совпадения)? Если да, можете ли вы привести некоторые примеры используемого синтаксиса (как для сопоставления, так и для замены)?
Я порезался о регулярных выражениях в стиле Perl, но обнаружил, что текстовые редакторы иногда придумывают свой собственный синтаксис.
5 ответов
Вам необходимо добавить или откомментировать следующую запись в вашей глобальной nanorc
файл (на моей машине это было /etc/nanorc
):
set regexp
Затем запустите новый терминал и нажмите CTRL + / и выполните замену, которая теперь должна учитывать регулярные выражения.
РЕДАКТИРОВАТЬ
Ищи conf->(\S+)
:
Заменить \1_conf
Нажмите a
заменить все вхождения:
Конечный результат:
В моей версии nano есть возможность включить поиск с meta
персонаж + R
, В Cygwin на Windows, мета-ключ alt
вот я и ударил ctrl
+\
чтобы перейти в режим поиска и замены, а затем alt
+r
чтобы найти регулярное выражение поиска.
Формат / нотация регулярного выражения для nano использует "Расширенное Регулярное Выражение", то есть Расширенное Регулярное Выражение POSIX, которое используется egrep
а также sed -r
, это включает метасимволы .
, [
а также ]
, ^
, $
, (
, )
, \1
в \9
, *
, {
а также }
, ?
, +
, |
и классы персонажей, такие как [:alnum:]
, [:alpha:]
, [:cntrl:]
, [:digit:]
, [:graph:]
, [:lower:]
, [:print:]
, [:punct:]
, [:space:]
, [:upper:]
, а также [:xdigit:]
,
Для более полной документации вы можете увидеть страницу руководства, man 7 regex
в Linux или man 7 re_format
в OS X. Эта страница может также дать вам ту же информацию: http://en.wikipedia.org/wiki/Regular_expression
К сожалению, в nano, кажется, нет никакого способа сопоставить что-либо, что охватывает несколько строк.
Это немного устарело, просто обновляет поисковый индекс.
Nano 5.5 использует
ASCII
столбец из этой же таблицы.
Спасибо @SP Ариф Сахари Вибово
В любом случае нашел ответ здесь (та же ссылка на вики):https://en.wikipedia.org/wiki/Regular_expression#POSIX_basic_and_extended
Недавно я столкнулся с проблемой вставки текста в начало каждой строки, начинающейся с числовой цифры. Для этого единственным способом отличить это от текста, который я не хотел менять, была предыдущая новая строка.
Поигравшись с информацией, представленной в этом ответе, я смог это сделать и решил добавить ее к ответу на случай, если кто-то еще столкнется с такой же ситуацией.
Чтобы найти начало строки, за которой следует число, а затем вставить «Текстовую строку» в начало каждой строки, которая начинается с числа:
\ затем «(^[0-9])» нажмите перенос возврата, затем: «Текстовая строка 1» нажмите перенос возврата и выберите «Да», если он сделает то, что вы хотите, затем нажмите a для всех. Опустите кавычки.