Основанное на регулярных выражениях соответствие и 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 для всех. Опустите кавычки.

Другие вопросы по тегам