如何在perl命令中打印扩展的ascii字符?
我试过以下:
1
-i.bak -pe "use open qw(:std :utf8);s/[^[:*ascii*:]]//g;" #PS_BULK_GP.LOCAL_WORKING_FOLDER##TARGET_TABLE#.ftm
2
-i.bak -pe "use open qw(:std :utf8);s/[^[:*print*:]]//g;" #PS_BULK_GP.LOCAL_WORKING_FOLDER##TARGET_TABLE#.ftm
答案 0 :(得分:1)
假设有一个UTF-8终端,
perl -e'use open qw(:std :encoding(UTF-8)); CORE::say "\xE9\x{2661}";'
perl -CSDA -e'CORE::say "\xE9\x{2661}";'
perl -CSDA -Mutf8 -e'CORE::say "é♡";'
提示:“扩展的ascii字符”是一种说“非ASCII字符”的糟糕方式。
您的代码在正则表达式字符类中使用[:*ascii*:]
,但这没有意义(“POSIX class [:*ascii*:] unknown in regex
”)。如果您想取消[:ascii:]
POSIX类,可以使用[^:ascii]
,所以
s/[^[^:ascii:]]//g # Strips everything except non-ASCII characters.
s/[[:ascii:]]//g # Same thing.
这就是你在问什么?如果没有,我不会看到您发布的代码与您提出的问题有什么关系。