2010-11-30 23 views
0

イム以下のsedコマンドをしようが、私は特別な文字とは運がない:SEDや特殊文字

echo "x#asdf" | sed "s/\([^-]\)#/\1\n/g" 

x 
asdf 

をしかし、私は

echo "ä#asdf" | sed "s/\([^-]\)#/\1\n/g" 

ä#asdf 

なぜtest.txtの

にいくつかの特別な文字を使用する場合は?

この作品:(GNUは4.1.5をSED)あなたのsedコマンドでは、私のために正常に動作するので

echo "ü#asdf" | sed "s/[ü]/-/g" 
ü#asdf 
+1

ここでうまく動作します。 sedスクリプトには何も問題はありません。ロケール/ファイルのエンコーディングに関連している必要があります。 – chris

+0

私は以下のロケールを持っています: 'de_DE.UTF-8' – gert

+1

en_US.UTF-8とde_DE.UTF-8のGNU sedバージョン4.2.1で動作します。あなたの 'sed 'のバージョンは? –

答えて

0

私は、このことについてわからないんだけど、:

echo "ü#asdf" | sed "s/ü/-/g" 
-#asdf 

が、このdoesntのを

$ LANG=de_DE.UTF-8 sed ... 

は、詳細については、この記事を参照してください:Why does sed fail with International characters and how to fix?。このようにsedを起動してみてください

もしこれがうまくいかない場合は、可能であればgnu sed 4.2にアップグレードしてください。 NEWSファイルには、4.2の「マルチバイト処理が修正されました」と表示されていますが、詳細は記載されていません。