2017-03-01 9 views
0

perlコマンドで拡張ASCII文字を印刷するにはどうすればよいですか? 印刷する方法perlコマンドの拡張ASCII文字

Iは以下と試みた:

-i.bak -pe "use open qw(:std :utf8);s/[^[:*ascii*:]]//g;" #PS_BULK_GP.LOCAL_WORKING_FOLDER##TARGET_TABLE#.ftm 
+1

['perlrecharclass'](http://perldoc.perl.org/perlrecharclass.html)を参照してください。 POSIX文字クラスの形式は '[:class:]' –

+1

どういう意味かはっきりしていません。あなたは*拡張ASCIIを印刷する方法を尋ねますが、あなたのコードはASCII以外の(そして印刷できない)文字をファイルから削除しようとします。 – Borodin

答えて

1
-i.bak -pe "use open qw(:std :utf8);s/[^[:*print*:]]//g;" #PS_BULK_GP.LOCAL_WORKING_FOLDER##TARGET_TABLE#.ftm 

は、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*:]を使用していますが、それは意味がありません(「POSIX class [:*ascii*:] unknown in regex」)。あなたは[:ascii:] POSIXクラスを否定したい場合は、[^:ascii]を使用することができますので、

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

は、あなたが何を求めているということですか?そうでない場合は、あなたが投稿したコードがあなたが尋ねた質問と何が関係しているのかわかりません。

関連する問題