Удаление нескольких спецификаций из файла
Я использую 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//’