Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 无法使正则表达式在新的Mac Big Sur终端中工作_Macos_Perl_Character Encoding - Fatal编程技术网

Macos 无法使正则表达式在新的Mac Big Sur终端中工作

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在线程序在MacBigSur终端中工作。这是网上的

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?现在最好,