I am aware of nano
's search and replace functionality, but is it capable of using regular expressions for matching and substitution (particularly substitutions that use a part of the match)? If so, can you provide some examples of the syntax used (both for matching and replacing)?
I cut my teeth on Perl-style regular expressions, but I've found that text editors will sometimes come up with their own syntax.
The regular expression format / notation for nano use "Extended Regular Expression", i.e. POSIX Extended Regular Expression, which is used by
egrep
andsed -r
, this include metacharacters.
,[
and]
,^
,$
,(
,)
,\1
to\9
,*
,{
and}
,?
,+
,|
, and character classes like[:alnum:]
,[:alpha:]
,[:cntrl:]
,[:digit:]
,[:graph:]
,[:lower:]
,[:print:]
,[:punct:]
,[:space:]
,[:upper:]
, and[:xdigit:]
.For more complete documentation you can see manual page,
man 7 regex
in Linux orman 7 re_format
in OS X. This page may give you same information as well: https://en.wikipedia.org/wiki/Regular_expression#POSIX_basic_and_extendedUnfortunately in nano there seems to be no way to match anything that span across multiple lines.
You need to add, or un-comment, the following entry in your global
nanorc
file (on my machine, it was/etc/nanorc
):Then fire up a new terminal and press CTRL + / and do your replacements which should now be regex-aware.
EDIT
Search for
conf->(\S+)
:Replace with
\1_conf
Press
a
to replace all occurrences:End result:
My version of nano has an option to swtich to regex search with the
meta
character +R
. In cygwin on Windows, the meta-key isalt
, so I hitctrl
+\
to get into search-and-replace mode, and thenalt
+r
to swtich to regex search.