1. ホーム
  2. bash

[解決済み] sed error - illegal byte sequence" (in bash) [duplicate] を取得する。

2023-02-06 11:30:09

質問

厄介な 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

どなたか、この意味を説明していただけませんか?コマンドのどの部分が問題なのでしょうか?

どのように解決するのですか?

を設定してみてください。 LANG 環境変数 ( LANG=C sed ... ) を指定するか、ここで紹介したバイナリ sed ツールのいずれかを使用します。 バイナリsedの置き換え

なぜエラーになるのですか?

なし LANG=C で指定されたエンコーディングでファイルがエンコードされていると見なします。 LANG で指定されたものであると仮定し、 ファイルは (バイナリであるため) LANG のエンコーディングでは有効な文字ではないバイトが含まれている可能性があります (従って、'不正なバイト列' を取得する可能性があります)。

なぜ LANG=C が働くのでしょうか?

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