I am aware of nano
\'s search and replace functionality, but is it capable of using regular expressions for matching and substitution (particularly substitutions
The regular expression format / notation for nano use "Extended Regular Expression", i.e. POSIX Extended Regular Expression, which is used by egrep
and sed -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 or man 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_extended
Unfortunately in nano there seems to be no way to match anything that span across multiple lines.
My version of nano has an option to swtich to regex search with the meta
character + R
. In cygwin on Windows, the meta-key is alt
, so I hit ctrl
+\
to get into search-and-replace mode, and then alt
+r
to swtich to regex search.
You need to add, or un-comment, the following entry in your global nanorc
file (on my machine, it was /etc/nanorc
):
set regexp
Then fire up a new terminal and press CTRL + / and do your replacements which should now be regex-aware.
Search for conf->(\S+)
:
Replace with \1_conf
Press a
to replace all occurrences:
End result: