1

シェルスクリプト、sed、またはPerlを使用して、非ASCII文字または特定のASCII文字をファイル内のスペースに置き換えたい。

1つは、すべての非ASCII文字をファイル内のスペースに置き換えることです。以下のコマンドを使用して実行できることを私は知っています

perl -pi -e 's/[[:^ascii:]]/ /g'

ダウンストリームが受け入れられない特定のASCII文字もあるので、それらの文字をスペースに置き換えたいと思います。たとえば、値が0x19(EM-メディアの終わり)のASCII文字はダウンストリームで受け入れられないため、スペースに置き換えたいと思います。

また、ダウンストリームで問題が発生するASCII文字の範囲を知っているので、それぞれをスペースに置き換えたいと思います。

これを達成するために助けを得ることができますか?

注:私たちのシステムのPerlバージョンは5.8.4です。この演習をSolaris10マシンで実行したいと思います。

ありがとう

4

1 に答える 1

3

それらを正規表現の文字クラスに追加するだけです。たとえば、ASCII以外の文字に加えて、 -\031の範囲内の(たとえば)文字を削除するには、次のように記述します。ae

perl -pi -e 's/[[:^ascii:]\031a-e]/ /g'

追加するために編集:

新しい要件の場合:

非ASCII文字をスペース付きのDEC145–148およびDEC150-151を除いて、DEC128以降に置き換える必要があります。

あなたは書ける:

perl -pi -e 's/[^[:ascii:]\x91-\x94\x96\x97]/ /g; s/\031/ /g;'

[:^ascii:]( 「非ASCII文字」から[:ascii:]「ASCII文字」への変更、および[...]「任意の文字...」から[^...]「」以外の任意の文字への変更に注意してください...。)

于 2013-02-13T18:13:18.150 に答える