2012-02-01 3 views
10

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

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

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

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

+0

у вас судим с помощью Notepad ++, Encodage> выберите тот, который должен быть там, преобразовать его обратно в UTF8-NoBoms –

+1

Что файл скомпилированный Javascript? Вы, конечно, имеете в виду конкатенирование или что? – mario

+0

Yep, конкатенированный, отредактированный. –

ответ

13

Смотрите также: Using awk to remove the Byte-order mark

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

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

0

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

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

Возможно, проще набрать '' \ xef \ xbb \ xbf'', см. [Двойные кавычки строк] (http://www.php.net/manual/en/language.types.string.php#language.types .string.syntax.double). – Wrikken

13

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

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

Это сработало для меня. Я просто не мог заставить команду 'sed' лишить их. – ibic

0

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

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

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

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

исключить .svn реж

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