如何在perl命令中打印扩展的ascii字符

时间:2017-03-01 07:32:15

标签: perl unix datastage

如何在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

1 个答案:

答案 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.

这就是你在问什么?如果没有,我不会看到您发布的代码与您提出的问题有什么关系。