Я делаю сжатие файлов JavaScript, и компрессор жалуется, что у моих файлов есть символ 
.
Как я могу найти эти символы и удалить их?
Я делаю сжатие файлов JavaScript, и компрессор жалуется, что у моих файлов есть символ 
.
Как я могу найти эти символы и удалить их?
perl -pi~ -CSD -e 's/^\x{fffe}//' file1.js path/to/file2.js
Я бы предположил, что инструмент сломается, если у вас есть другие utf-8 в ваших файлах, но если нет, возможно, это обходное решение может вам помочь. (Непроверенный...)
Изменить: добавлена опция -CSD
в соответствии с комментарием tchrist.
Вы можете легко удалить их с помощью vim, выполните следующие действия:
1) В вашем терминале откройте файл с помощью vim:
vim file_name
2) Удалите все спецификации:
:set nobomb
3) Сохраните файл:
:wq
Другой способ удаления этих символов - с помощью Vim:
vim -b имя_файла
Теперь эти "скрытые" символы видны (<feff>
) и могут быть удалены.
Спасибо за предыдущие ответы, здесь вариант sed (1) на всякий случай:
sed '1s/^\xEF\xBB\xBF//'
В Unix/Linux:
sed 's/\xEF\xBB\xBF//' < inputfile > outputfile
В MacOSX
sed $'s/\xEF\xBB\xBF//' < inputfile > outputfile
Обратите внимание на $after sed для mac.
В Windows
Существует Super Sed расширенная версия sed. Для Windows это автономный .exe, предназначенный для запуска из командной строки.
Использование хвоста может быть проще:
tail --bytes=+4 filename > new_filename
В Windows вы можете использовать утилиту recode с backported из UnxUtils.
В Sublime Text вы можете установить Highlighter package а затем настройте регулярное выражение в пользовательских настройках.
Здесь я добавил \uFEFF
в конец свойства highlighter_regex
.
{
"highlighter_enabled": true,
"highlighter_regex": "(\t+ +)|( +\t+)|[\u2026\u2018\u2019\u201c\u201d\u2013\u2014\uFEFF]|[\t ]+$",
"highlighter_scope_name": "invalid",
"highlighter_max_file_size": 1048576,
"highlighter_delay": 3000
}
Чтобы перезаписать настройки пакета по умолчанию, поместите здесь файл:
~/.config/возвышенный-текст-3/Пакеты/User/highlighter.sublime-настройка
Я использовал vimgrep для этого
:vim "[\uFEFF]" *
также обычная команда поиска vim
/[\uFEFF]
Команда 'file' показывает, имеется ли спецификация:
Например: "Файл myfile.xml" отображает: "Документ XML 1.0, текст Юникода UTF-8 (с BOM), с очень длинными строками, с терминаторами строк CRLF"
dos2unix удалит спецификацию.
Сохраните файл без подписи кода.
Я предлагаю использовать инструмент "dos2unix", пожалуйста, проверьте, чтобы запустить dos2unix./thefile.js
.
При необходимости попробуйте использовать что-то вроде этого для нескольких файлов:
for x in $(find . -type f -exec echo {} +); do dos2unix $x ; done
Мое почтение.