94

ストリーム編集を行って、厄介なParallelsアイコンを変更します。画像ファイルではなく、開発が不十分でアプリ自体に埋め込まれていません。だから私はいくつかの良いフィードバックがあるこのsedコマンドを見つけました:

sudo sed -i.bak s/Parallels_Desktop_Overlay_128/Parallels_Desktop_Overlay_000/g /Applications/Parallels\ Desktop.app/Contents/MacOS/prl_client_app

戻りますsed: RE error: illegal byte sequence

誰かがこれが何を意味するのか説明できますか?コマンドのどの部分が問題ですか?

4

4 に答える 4

160

LANG環境変数( )を設定するLANG=C sed ...か、ここに記載されているバイナリsedツールの1つを使用してみてください:binary sed replace

なぜエラーですか?

LANG=Csedを使用しない場合、ファイルは指定されたエンコーディングでエンコードされ、LANGファイル(バイナリ)には、のエンコーディングで有効な文字ではないバイトが含まれる可能性がありますLANG(したがって、「不正なバイトシーケンス」が発生する可能性があります)。

なぜ機能LANG=Cするのですか?

Cは、たまたますべてのASCII文字をそれ自体として扱い、非ASCII文字をリテラルとして扱います。

于 2012-07-02T03:59:42.990 に答える
75

LANG=C一人で私のためにトリックをしませんでしたが、追加することLC_CTYPE=Cもそれを解決しました。

于 2013-03-18T02:07:26.493 に答える
29

LANG=Cとに加えて、これを機能させるためLC_CTYPE=Cに私はしなければなりませんLC_ALL=Cでした。

LC_ALLLC_*すべての個々のカテゴリを上書きします。したがって、最も堅牢なアプローチはを使用することLC_ALL=C sed ...です。他の変数も処理する必要はありません。

于 2014-05-07T16:48:41.133 に答える
19

私は実行することによってそれを行うことができました:

unset LANG

sedコマンドの前。

私が何をしたのか、なぜそれが機能するのかはわかりませんが、機能しました。

于 2013-06-04T16:37:07.467 に答える