2017-03-01 5 views
0

perl 명령에서 확장 된 ascii 문자를 인쇄하려면 어떻게해야합니까? 인쇄 방법 perl 명령에서 확장 된 ascii 문자

I는 아래로 시도 :

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

['perlrecharclass'] (http://perldoc.perl.org/perlrecharclass.html)를 참조하십시오. POSIX 문자 클래스의 형식은'[: class :]' –

+1

내가 무슨 뜻인지 잘 모르겠습니다. 확장 ASCII를 인쇄하는 방법을 묻지 만 코드는 파일에서 비 ASCII (및 인쇄 할 수없는) 문자를 제거하려고 시도합니다. – Borodin

답변

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 "é♡";' 

,369 가정

팁 : "확장 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. 

당신이 무엇을 물어인가요? 그렇지 않다면 내가 게시 한 코드가 사용자가 묻는 질문과 관련이 있는지를 알 수 없습니다.