Удаление нескольких спецификаций из файла

Я использую Javascript файл, который является конкатенацией других файлов JavaScript.

К сожалению, человек, который объединил эти файлы JavaScript вместе, не использовал надлежащую кодировку при чтении файла и разрешил спецификацию для каждого отдельного файла JavaScript для записи в файл конкатенированного JavaScript.

Кто-нибудь знает простой способ поиска по конкатенированному файлу и удаления всех/всех маркеров спецификации?

Использование PHP или bash script для Mac OSX было бы здорово.

Ответы

Ответ 1

См. также: Использование awk для удаления метки байта

Чтобы удалить несколько спецификаций из любого места в текстовом файле, вы можете попробовать что-то подобное. Просто оставьте якорь ^:

perl -e 's/\xef\xbb\xbf//;' -pi~ file.js

(Это редактирует файл на месте, но создает резервную копию file.js~.)

Ответ 2

Я обычно делаю это с помощью vim:

vim -c "set nobomb" -c wq! myfile

Ответ 3

Я также понял это решение, которое полностью работает в PHP:

$packed = pack("CCC",0xef,0xbb,0xbf);
$contents = preg_replace('/'.$packed.'/','',$contents);

Ответ 4

выборка BOM файлов

grep -rIlo $’^\xEF\xBB\xBF’ ./

удалить BOM файлы

grep -rIlo $’^\xEF\xBB\xBF’ . | xargs sed –in-place -e ‘s/\xef\xbb\xbf//’

исключить .svn dir

grep -rIlo –exclude-dir=".svn" $’^\xEF\xBB\xBF’ . | xargs sed –in-place -e ‘s/\xef\xbb\xbf//’