sed
ASCII 以外のテキストの設定がうまくいきません。ただし、 perl
で (ほぼ) 同じコードを使用できます 希望する結果が得られます:
perl -pe 's/.*\| //' x
ファイルの入力エンコーディングが環境の優先エンコーディングと異なる場合、エラーが発生すると思います。
例:in
はUTF-8です
$ LANG=de_DE.UTF-8 sed 's/.*| //' < in
X
Y
$ LANG=de_DE.iso88591 sed 's/.*| //' < in
X
Y
UTF-8 は安全に ISO-8859-1 として解釈できます。奇妙な文字が表示されますが、それ以外は問題ありません。
例:in
ISO-8859-1です
$ LANG=de_DE.UTF-8 sed 's/.*| //' < in
X
Gras Och Stenar Trad - From MöY
$ LANG=de_DE.iso88591 sed 's/.*| //' < in
X
Y
ISO-8859-1 は UTF-8 として解釈できず、入力ファイルのデコードに失敗します。奇妙な一致は、おそらく sed が完全に失敗するのではなく、回復しようとするためです。
答えは Debian Lenny/Sid と sed 4.1.5 に基づいています。