caractere exibido em arquivos. Como removê-los?

Eu estou fazendo compactação de arquivos JavaScript e o compressor está reclamando que meus arquivos possuem um caractere neles.

Como posso procurar por esses caracteres e removê-los?

 perl -pi~ -CSD -e 's/^\x{fffe}//' file1.js path/to/file2.js 

Eu suponho que a ferramenta irá quebrar se você tiver outros utf-8 em seus arquivos, mas se não, talvez essa solução alternativa possa ajudá-lo. (Não testado …)

Edit : adicionada a opção -CSD , conforme comentário do tchrist.

Você pode facilmente removê-los usando o vim , aqui estão os passos:

1) No seu terminal, abra o arquivo usando o vim:

 vim file_name 

2) Remova todos os caracteres da BOM :

 :set nobomb 

3) Salve o arquivo:

 :wq 

Outro método para remover esses caracteres – usando o Vim :

vim -b fileName

Agora esses caracteres “ocultos” são visíveis ( ) e podem ser removidos.

No Unix / Linux:

 sed 's/\xEF\xBB\xBF//' < inputfile > outputfile 

No MacOSX

 sed $'s/\xEF\xBB\xBF//' < inputfile > outputfile 

Observe o $ após sed para mac.

No Windows

Há Super Sed uma versão melhorada do sed. Para o Windows, este é um exe autônomo, destinado a ser executado a partir da linha de comando.

Obrigado pelas respostas anteriores, eis uma variante sed (1) para o caso de:

 sed '1s/^\xEF\xBB\xBF//' 

Usar a cauda pode ser mais fácil:

 tail --bytes=+4 filename > new_filename 

A solução do @tripleee não funcionou para mim. Mas mudando a codificação do arquivo para ASCII e novamente para UTF-8 fez o truque 🙂

No Windows, você pode usar o utilitário de recodificação backported da UnxUtils .

No Sublime Text, você pode instalar o pacote Highlighter e personalizar a expressão regular nas configurações do usuário.

Aqui eu adicionei \uFEFF ao final da propriedade 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 } 

Para sobrescrever as configurações do pacote padrão, coloque o arquivo aqui:

~ / .config / sublime-text-3 / Pacotes / Usuário / highlighter.sublime-settings

Eu usei o vimgrep para isso

 :vim "[\uFEFF]" * 

também comando normal de busca vim

 /[\uFEFF] 

O comando ‘file’ mostra se a lista de materiais está presente:

Por exemplo: ‘file myfile.xml’ exibe: “Documento XML 1.0, texto Unicode UTF-8 (com BOM), com linhas muito longas, com terminadores de linha CRLF”

dos2unix removerá a lista de materiais.

Salve o arquivo sem assinatura de código.