- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:sedコマンドで全ての2バイト文字を指定するには?)
sedコマンドで全ての2バイト文字を指定するには?
このQ&Aのポイント
- LinuxやWindows用のsedコマンドには、[・・・]という演算子によって、特定の範囲の文字集合が指定できます。
- シフトJISコードでは、最初の漢字が「亜」であり、最後の漢字が「黑」らしいので、sed "s/[あ-んア-ン亜-黑]//g"といったコマンドを試しましたが、これでは「ー」「、」「。」「ぁぃぅぇぉ」といった文字が残ってしまいます。
- シフトJISコードの2バイト文字の範囲を知りたい場合は、調べても分からないことが多いです。情報提供をお待ちしています。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
そのsedがShift-JISの「1文字」を「1文字」として処理できるものである必要があります。 「マルチバイト文字に対応」と明記していないものでは、 [あ-んア-ン亜-黑] は 「あ」の1バイト目 「あ」の2バイト目から「ん」の1バイト目 「ん」の1バイト目 ... とばらばらに解釈されている可能性があります。 あとは、Shift-JISのコード表を見れば、「あ-ん」には「ぁ」は入ってないし、句読点は別のところにあるのがわかると思います。 http://charset.7jp.net/sjis.html > [・・・]という演算子 演算子ではないですが...
お礼
御回答ありがとうございます。 >そのsedがShift-JISの「1文字」を「1文字」として処理できるものである必要があります。 onigsedというsedコマンドを使っているのですが、試してみると日本語対応していました。 提供して下さったURLを見た所、全角のスペースが2バイト文字の最初の文字であり、「"」という文字が最後の文字のようでした。 そこで onigsed "s/[ -"]//g" test.txt とすると、2バイト文字が全て削除できました。 ありがとうございました。