1.6.3. 替换表达式
对于替换表达式,一些字符有特殊的含义。
表 1.25. 替换表达式
替换表达式 | 替换表达式替换的文本 |
---|---|
& | 正则表达式所匹配的内容(在 emacs 中使用 \& ) |
\n | 前 n 个括号的正则表达式匹配的内容( “n” 是数字) |
对 Perl 替换字符串来说,应使用“$&”而非“&”,应使用“$n”而非“\n”。
尝试下列例子
$ echo zzz1abc2efg3hij4 | \
sed -e 's/\(1[a-z]*\)[0-9]*\(.*\)$/=&=/'
zzz=1abc2efg3hij4=
$ echo zzz1abc2efg3hij4 | \
sed -e 's/\(1[a-z]*\)[0-9]*\(.*\)$/\2===\1/'
zzzefg3hij4===1abc
$ echo zzz1abc2efg3hij4 | \
perl -pe 's/(1[a-z]*)[0-9]*(.*)$/$2===$1/'
zzzefg3hij4===1abc
$ echo zzz1abc2efg3hij4 | \
perl -pe 's/(1[a-z]*)[0-9]*(.*)$/=$&=/'
zzz=1abc2efg3hij4=
请特别注意这些括号正则表达式的格式,以及这些被匹配的文本在不同的工具中是如何被替换的。
这些正则表达式在一些编辑器中也可以用来移动光标和替换文本。
在 shell 命令行行末的反斜杠 “\
” 会跳脱一个换行符(作为空白符),并将光标移动到下一行的行首。
请阅读所有相关手册来学习这些命令。