BOMを含むUTF-8エンコーディングファイルがあり、BOMを削除したいと思います。ファイルからBOMを削除するLinuxコマンドラインツールはありますか?
$ file test.xml
test.xml: XML 1.0 document, UTF-8 Unicode (with BOM) text, with very long lines
答え1
ファイルにUTF-8 BOMが含まれているかどうかわからない場合(仮想GNU実装sed
)、BOMがある場合は削除し、存在しない場合は変更しません。
sed '1s/^\xEF\xBB\xBF//' < orig.txt > new.txt
次のオプションを使用して既存のファイルを上書きすることもできます-i
。
sed -i '1s/^\xEF\xBB\xBF//' orig.txt
BSDバージョン(macOSなど)を使用している場合は、sed
bashにエスケープを実行させる必要があります。
sed $'1s/\xef\xbb\xbf//' < orig.txt > new.txt
答え2
UTF-8では、BOMは意味がありません。これは通常、Microsoftオペレーティングシステムの偽のソフトウェアのバグのために追加されます。
dos2unix
これは削除され、Windowsテキストファイルの他の属性が処理されます。
dos2unix test.xml
答え3
VIMの使用
VIMでファイルを開きます。
vi text.xml
BOMエンコーディングの削除:
:set nobomb
ファイルを保存して終了します。
:x
非対話型ソリューションの場合は、次のコマンドラインを試してください。
vi -c ":set nobomb" -c ":wq" text.xml
これにより、BOMが削除され、ファイルが保存され、コマンドラインがすべて終了します。
答え4
このために、私はしばしばvim one-linerを使います。
vim --clean -c 'se nobomb|wq' filename
vim --clean -c 'bufdo se nobomb|wqa' filename1 filename2 ...