2017-03-01 1 views
0

Comment puis-je imprimer un caractère ascii étendu dans une commande perl?Comment imprimer Caractère ascii étendu dans la commande perl

J'ai essayé avec ci-dessous:

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

Voir ['perlrecharclass'] (http://perldoc.perl.org/perlrecharclass.html). Les classes de caractères POSIX ont la forme '[: class:]' –

+1

Je ne comprends pas ce que vous voulez dire. Vous demandez comment * imprimer * ASCII étendu, mais votre code essaie de * supprimer * caractères non-ASCII (et non-imprimable) d'un fichier. – Borodin

Répondre

1

En supposant un terminal 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 "é♡";' 

Astuce: "Caractère ascii étendu" est une mauvaise façon de dire "caractère non-ASCII".


Votre code utilise [:*ascii*:] dans une classe de caractères regex, mais cela n'a pas de sens ("POSIX class [:*ascii*:] unknown in regex"). Si vous voulez annuler la classe POSIX [:ascii:], vous pouvez utiliser [^:ascii], si

s/[^[^:ascii:]]//g # Strips everything except non-ASCII characters. 
s/[[:ascii:]]//g  # Same thing. 

Est-ce ce que vous demandez? Sinon, je ne vois pas ce que le code que vous avez posté a à voir avec la question que vous avez posée.