【问题标题】:How to print Extended ascii character in perl command如何在Perl命令中打印扩展的ASCII字符
【发布时间】:2017-07-20 10:13:36
【问题描述】:

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

【问题讨论】:

  • perlrecharclass。 POSIX 字符类的格式为 [:class:]
  • 我不清楚你的意思。您询问如何打印 扩展 ASCII,但您的代码尝试从文件中删除 非 ASCII(和不可打印)字符。

标签: perl unix datastage


【解决方案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.

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

【讨论】:

    猜你喜欢
    • 2021-07-01
    • 1970-01-01
    • 2011-01-09
    • 2019-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-14
    • 1970-01-01
    相关资源
    最近更新 更多