Удалить несколько спецификаций из файла - PullRequest
12 голосов
/ 01 февраля 2012

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

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

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

Использование PHP или bashСценарий для Mac OSX был бы отличным.

Ответы [ 4 ]

17 голосов
/ 01 февраля 2012

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

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

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

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

15 голосов
/ 05 февраля 2013

Обычно я делаю это, используя vim:

vim -c "set nobomb" -c wq! myfile
0 голосов
/ 19 ноября 2014

получить файлы спецификации

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

удалить файлы спецификации

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//’

0 голосов
/ 01 февраля 2012

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

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