Использование GNU sed
(в Linux или Cygwin):
# Removing BOM from all text files in current directory:
sed -i '1 s/^\xef\xbb\xbf//' *.txt
В FreeBSD:
sed -i .bak '1 s/^\xef\xbb\xbf//' *.txt
Преимущество использования GNU или FreeBSD sed
: -i
означает «на месте» и будет обновлять файлы без необходимости перенаправления или странных трюков.
На Mac:
Это решение awk
в другом ответе works , но команда sed
выше не работает. По крайней мере, в документации Mac (Sierra) sed
не упоминается поддержка шестнадцатеричного экранирования ala \xef
.
Аналогичный трюк может быть достигнут с любой программой путем подключения к инструменту sponge
из moreutils :
awk '…' INFILE | sponge INFILE