※ ChatGPTを利用し、要約された質問です(原文:sedコマンドで全ての2バイト文字を指定するには?)
sedコマンドで全ての2バイト文字を指定するには?
このQ&Aのポイント
LinuxやWindows用のsedコマンドには、[・・・]という演算子によって、特定の範囲の文字集合が指定できます。
シフトJISコードでは、最初の漢字が「亜」であり、最後の漢字が「黑」らしいので、sed "s/[あ-んア-ン亜-黑]//g"といったコマンドを試しましたが、これでは「ー」「、」「。」「ぁぃぅぇぉ」といった文字が残ってしまいます。
シフトJISコードの2バイト文字の範囲を知りたい場合は、調べても分からないことが多いです。情報提供をお待ちしています。
sedコマンドで全ての2バイト文字を指定するには?
こんにちは。
LinuxやWindows用のsedコマンドには、[・・・]という演算子によって、
特定の範囲の文字集合が指定できます。
例えば
sed "s/[a-zA-Z]//g" test.txt
というコマンドによって、test.txtから、アルファベットを削除する事ができます。
では、シフトJISコードにおいて、全ての2バイト文字を指定するにはどうすればよいのでしょうか?
シフトJISコードでは、最初の漢字が「亜」であり、最後の漢字が「黑」らしいので、
sed "s/[あ-んア-ン亜-黑]//g"
といったコマンドを試しましたが、これでは
「ー」「、」「。」「ぁぃぅぇぉ」といった文字が残ってしまいます。
結局は、シフトJISコードの2バイト文字の範囲を知りたいのですが、
調べてみても分かりませんでした。
ご存知の方がいらっしゃれば、情報提供をお願い致します。
お礼
御回答ありがとうございます。 >そのsedがShift-JISの「1文字」を「1文字」として処理できるものである必要があります。 onigsedというsedコマンドを使っているのですが、試してみると日本語対応していました。 提供して下さったURLを見た所、全角のスペースが2バイト文字の最初の文字であり、「"」という文字が最後の文字のようでした。 そこで onigsed "s/[ -"]//g" test.txt とすると、2バイト文字が全て削除できました。 ありがとうございました。