このコマンドがAIXで機能しないのはなぜですか?

このコマンドがAIXで機能しないのはなぜですか?

以下を使用してファイルからUTF-8 BOMを削除したいと思います。

sed '1 s/\xEF\xBB\xBF//' old.java > tmp.java

しかし、それはうまくいきませんでした。 kshを使用してAIX 7.1で実行されています。

ベストアンサー1

\xPOSIX では、基本正規表現の動作は指定されません。一部の実装ではこれを使用して16進バイト表現を導入し、一部の実装ではこれをx

POSIXlyでは、次のことができます。

(export LC_ALL=C
 sed "s/$(printf '\357\273\277')//") < file.in > file.out

ここでも幸運を楽しむこともできます。

< file.in iconv -t UTF-16LE | iconv -f UTF-16 > file.out

これはAIXで動作するかどうかは言えませんが、GNUの場合はBOMを持つUTF-16をiconv意味し、UTF-16UTF-16LEはUTF-16リトルエンディアンを意味するため、2番目はiconv最初の-16LE BOMで生成されたUTFを削除します(UTF -16BEでも動作します)

おすすめ記事