Perl:强大的文本处理工具
1. 使用反向引用和编号变量进行替换
在文本替换操作中,grep 和 sed 通常将括号视为普通字符,除非使用反斜杠转义,转义后的括号可捕获其中正则表达式匹配的内容。而 Perl 则相反,默认括号为捕获类型,使用反斜杠转义后才变为普通字符。
grep 和 sed 通用的正则表达式符号允许使用编号反向引用(如 \1 和 \2)来引用捕获的匹配项。在 sed 的替换命令中,这些反向引用可用于搜索和替换字段;但在 Perl 的替换操作符中,它们仅适用于搜索字段,不过在替换字段及程序其他地方可以使用带美元符号前缀的变量(如 $1、$2 等)。
反向引用和编号变量在需要在匹配模式的单词间插入新文本的替换场景中非常有用。例如,要在某人的头衔(可能带点)和姓氏(拼写可能不同)之间插入其名字,sed 和 Perl 的实现方式如下:
$ cat invite # 注意 Mr. 与 Mr,以及 Bean 与 Been
Mr. Bean hereby requests the company of his noble
companion, Teddy, for high tea today with Mr Been.
$ sed 's/\(Mr\.\) \(Be[ea]n\)/\1 Jelly \2/g;' invite
Mr. Jelly Bean hereby requests the company of his noble
companion, Teddy, for high tea today with Mr Been.
$ perl –
超级会员免费看
订阅专栏 解锁全文
744

被折叠的 条评论
为什么被折叠?



