Regex-based matching and sustitution with nano?

2020-02-12 01:14发布

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.

3条回答
The star\"
2楼-- · 2020-02-12 01:35

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.

查看更多
The star\"
3楼-- · 2020-02-12 01:47

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.

EDIT


Search for conf->(\S+):

enter image description here


Replace with \1_conf

enter image description here


Press a to replace all occurrences:

enter image description here


End result:

enter image description here

查看更多
Fickle 薄情
4楼-- · 2020-02-12 01:49

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.

查看更多
登录 后发表回答