Command-Line

如何從 UTF-8 文件中刪除 BOM?

  • April 6, 2022

我有一個帶有 BOM 的 UTF-8 編碼文件,並且想要刪除 BOM。是否有任何 linux 命令行工具可以從文件中刪除 BOM?

$ file test.xml
test.xml:  XML 1.0 document, UTF-8 Unicode (with BOM) text, with very long lines

如果您不確定該文件是否包含 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 版本sed(例如 macOS),那麼您需要讓 bash 進行轉義:

sed $'1s/\xef\xbb\xbf//' < orig.txt > new.txt

BOM 在 UTF-8 中沒有意義。這些通常是由 Microsoft 作業系統上的偽造軟體錯誤添加的。

dos2unix將刪除它並處理 Windows 文本文件的其他特性。

dos2unix test.xml

引用自:https://unix.stackexchange.com/questions/381230