如何perl
从 shell 正确替换 UTF-8 字符?
这些示例使用标准输入,但我也需要一些适用的东西perl ... file
。
这是我的期望:
$ echo ABCæøåDEF | perl -CS -pe "s/([æøå])/[\\1]/g"
ABC[æ][ø][å]DEF
Run Code Online (Sandbox Code Playgroud)
这就是我得到的:
$ echo ABCæøåDEF | perl -CS -pe "s/([æøå])/[\\1]/g"
ABCæøåDEF
Run Code Online (Sandbox Code Playgroud)
用 ASCII 替换 Unicode 字符可以立即生效:
$ echo ABC123DEF | perl -CS -pe "s/([123])/[\\1]/g"
ABC[1][2][3]DEF
Run Code Online (Sandbox Code Playgroud)
我的环境:
perl 5.18.2
Bash 3.2.57
LC_ALL=en_US.UTF-8
LANG=en_US.UTF-8
Run Code Online (Sandbox Code Playgroud)
$ echo 'ABCæøåDEF' |
perl -CSD -Mutf8 -pe 's/([æøå])/[$1]/g'
Run Code Online (Sandbox Code Playgroud)
也适用于文件
ABC[æ][ø][å]DEF
Run Code Online (Sandbox Code Playgroud)