さまざまな文字を一重引用符または二重引用符で置き換えようとしています。
これが私のテストファイルです:
# Replace all with double quotes
" fullwidth
“ left
” right
„ low
" normal
# Replace all with single quotes
' normal
‘ left
’ right
‚ low
‛ reverse
` backtick
私はこれをやろうとしています...
perl -Mutf8 -pi -e "s/[\x{2018}\x{201A}\x{201B}\x{FF07}\x{2019}\x{60}]/'/ug" test.txt
perl -Mutf8 -pi -e 's/[\x{FF02}\x{201C}\x{201D}\x{201E}]/"/ug' text.txt
ただし、適切に置き換えられるのはバッククォート文字のみです。他のコードポイントが大きすぎることと関係があると思いますが、これに関するドキュメントは見つかりません。
ここに、Unicodeコードポイントをダンプするワンライナーがあり、それらが正規表現と一致することを確認します。
$ awk -F\ '{print $1}' test.txt | \
perl -C7 -ne 'for(split(//)){print sprintf("U+%04X", ord)." ".$_."\n"}'
U+FF02 "
U+201C “
U+201D ”
U+201E „
U+0022 "
U+0027 '
U+2018 ‘
U+2019 ’
U+201A ‚
U+201B ‛
U+0060 `
正規表現が一致しないのはなぜですか?