Macos 无法使正则表达式在新的Mac Big Sur终端中工作
我正试图让perl在线程序在MacBigSur终端中工作。这是网上的Macos 无法使正则表达式在新的Mac Big Sur终端中工作,macos,perl,character-encoding,Macos,Perl,Character Encoding,我正试图让perl在线程序在MacBigSur终端中工作。这是网上的 perl -pi -e 's/REGULAR_EXPRESSION_TO_BE FOUND/REPLACEMENT/g' *.hmtl 当我尝试在编辑器BBEDITOR中搜索和替换时,它工作正常,但当我尝试在macOS终端中搜索和替换时,它不会替换。我相信这可能与编码有关,因为我正在处理西班牙语文本。但是我的文本是UTF-8。如果您的正则表达式或替换文本是unicode,则需要使用utf8杂注来告诉Perl将命令行脚本解码为
perl -pi -e 's/REGULAR_EXPRESSION_TO_BE FOUND/REPLACEMENT/g' *.hmtl
当我尝试在编辑器BBEDITOR中搜索和替换时,它工作正常,但当我尝试在macOS终端中搜索和替换时,它不会替换。我相信这可能与编码有关,因为我正在处理西班牙语文本。但是我的文本是UTF-8。如果您的正则表达式或替换文本是unicode,则需要使用
utf8
杂注来告诉Perl将命令行脚本解码为unicode。否则,它们将根据您的语言环境被解释为字节或其他形式。仅仅因为它看起来像是你终端上的正确角色并不意味着它真的是。这是因为终端自己对粘贴、键入或打印的字节进行解码
将-Mutf8
添加到命令行或使用utf8。您可以始终使用B::perlstring
函数查看Perl对键入内容的看法
# v5.22
$ perl -e 'use B; print B::perlstring "愛"; '
"\346\204\233"
$ perl -Mutf8 -e 'use B; print B::perlstring "愛"; '
"\x{611b}"
$ perl -e 'print "\346\204\233"; '
愛
正则表达式和文件必须采用相同的编码才能进行匹配。因为显然“\346\204\233”!=“\x{611b}”。要消除终端的模糊性,您可能需要编写一个简短的脚本文件来调试它。您还可能需要-CSD
有关更多信息,请参见此处
HTH
*.hmtl
应该是*.html
?如果您的文件使用UTF-8,您需要在选项中选择-CD
来告诉perl。您的终端的本地设置是什么?您是指BBEdit吗?是的,我是指BBEdit?现在最好,