
こんにちは。
LinuxやWindows用のsedコマンドには、[・・・]という演算子によって、
特定の範囲の文字集合が指定できます。
例えば
sed "s/[a-zA-Z]//g" test.txt
というコマンドによって、test.txtから、アルファベットを削除する事ができます。
では、シフトJISコードにおいて、全ての2バイト文字を指定するにはどうすればよいのでしょうか?
シフトJISコードでは、最初の漢字が「亜」であり、最後の漢字が「黑」らしいので、
sed "s/[あ-んア-ン亜-黑]//g"
といったコマンドを試しましたが、これでは
「ー」「、」「。」「ぁぃぅぇぉ」といった文字が残ってしまいます。
結局は、シフトJISコードの2バイト文字の範囲を知りたいのですが、
調べてみても分かりませんでした。
ご存知の方がいらっしゃれば、情報提供をお願い致します。
No.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バイト文字が全て削除できました。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
stable diffusionのエラー
-
QRコードの作成方法について
-
Apache Windows版2.4.58を直接...
-
libreあればopen office削除し...
-
この話は本当? 中華AI「DeepSe...
-
WindowsXPにApache OpenOffice...
-
アクオス
-
FlowchartのMDファイルをPNG化...
-
(大学)数学の質問をするために...
-
特許公報のPDFから項目毎にExce...
-
Xamppはオープンソースのディス...
-
OSS(オープンソースソフトウェ...
-
みなさん、mvなどはどのアプリ...
-
Webサイトのビデオプレーヤーに...
-
研究する文献がたくさんありま...
-
研究する文献がたくさんありま...
-
chatgpt 4oを使っています。あ...
-
【abc】に【完全一致】する正規...
-
プロジェクター
-
WindowsでのPythonの挙動について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
UTF-8で5~6バイトになる文字コ...
-
10Mバイトて文字数に すると何...
-
char str[256]の256の意味は?
-
COBOLのCOMP形式について
-
バイト列とバイナリ列の違いが...
-
エクセルシート名の制限を変更...
-
ピクセル,dpiから容量(バイト...
-
ビットスワップとバイトスワッ...
-
テキストBOXの入力制限について
-
機種依存文字をチェックしたい。
-
「1TB」のHDDに日本語は何字入...
-
C++ Builderで文字列をバイトに...
-
全角半角を調べるライブラリ関...
-
SQLで1バイト、2バイト混在...
-
VB6とSQL Serverの桁の扱い方に...
-
jis x 0208 について
-
VBAでShift-JISのURLエンコード
-
この関数はどのプログラミング...
-
COBOL PICTUREで X,S,Vの意味
-
半角、全角の判別方法
おすすめ情報