UTF-8文字をシェルPerlに置き換える

UTF-8文字をシェルPerlに置き換える

perlシェルでUTF-8文字を正しく置き換える方法は?

例では標準入力を使用していますが、標準入力も機能する必要がありますperl ... file

これが私が期待するものです:

$ echo ABCæøåDEF | perl -CS -pe "s/([æøå])/[\\1]/g"
ABC[æ][ø][å]DEF

これが私が得るものです:

$ echo ABCæøåDEF | perl -CS -pe "s/([æøå])/[\\1]/g"
ABCæøåDEF

Unicode文字をASCIIに置き換えるとすぐに適用されます。

$ echo ABC123DEF | perl -CS -pe "s/([123])/[\\1]/g"
ABC[1][2][3]DEF

私の環境:

perl 5.18.2
Bash 3.2.57
LC_ALL=en_US.UTF-8
LANG=en_US.UTF-8

ベストアンサー1

これを使用してください:

 $ echo 'ABCæøåDEF' |
    perl -CSD -Mutf8 -pe 's/([æøå])/[$1]/g'

ファイルでも機能します。

出力:

ABC[æ][ø][å]DEF

メモ:

  • 交換:\\1あり\1そして私たちは使用$1
  • perldoc perlrunutf8-CSDトリックチェック

おすすめ記事