以下を使用してファイルからUTF-8 BOMを削除したいと思います。
sed '1 s/\xEF\xBB\xBF//' old.java > tmp.java
しかし、それはうまくいきませんでした。 kshを使用してAIX 7.1で実行されています。
ベストアンサー1
\x
POSIX では、基本正規表現の動作は指定されません。一部の実装ではこれを使用して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-16
UTF-16LEはUTF-16リトルエンディアンを意味するため、2番目はiconv
最初の-16LE BOMで生成されたUTFを削除します(UTF -16BEでも動作します)