• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:sedコマンドで全ての2バイト文字を指定するには?)

sedコマンドで全ての2バイト文字を指定するには?

このQ&Aのポイント
  • LinuxやWindows用のsedコマンドには、[・・・]という演算子によって、特定の範囲の文字集合が指定できます。
  • シフトJISコードでは、最初の漢字が「亜」であり、最後の漢字が「黑」らしいので、sed "s/[あ-んア-ン亜-黑]//g"といったコマンドを試しましたが、これでは「ー」「、」「。」「ぁぃぅぇぉ」といった文字が残ってしまいます。
  • シフトJISコードの2バイト文字の範囲を知りたい場合は、調べても分からないことが多いです。情報提供をお待ちしています。

質問者が選んだベストアンサー

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

そのsedがShift-JISの「1文字」を「1文字」として処理できるものである必要があります。 「マルチバイト文字に対応」と明記していないものでは、 [あ-んア-ン亜-黑] は 「あ」の1バイト目 「あ」の2バイト目から「ん」の1バイト目 「ん」の1バイト目 ... とばらばらに解釈されている可能性があります。 あとは、Shift-JISのコード表を見れば、「あ-ん」には「ぁ」は入ってないし、句読点は別のところにあるのがわかると思います。 http://charset.7jp.net/sjis.html > [・・・]という演算子 演算子ではないですが...

MetalLover
質問者

お礼

御回答ありがとうございます。 >そのsedがShift-JISの「1文字」を「1文字」として処理できるものである必要があります。 onigsedというsedコマンドを使っているのですが、試してみると日本語対応していました。 提供して下さったURLを見た所、全角のスペースが2バイト文字の最初の文字であり、「"」という文字が最後の文字のようでした。 そこで onigsed "s/[ -"]//g" test.txt とすると、2バイト文字が全て削除できました。 ありがとうございました。

関連するQ&A