107 votes

En utilisant awk pour supprimer la marque d’ordre d’octet

Quelqu'un at-il une idée comment un script awk (sans doute un bon mot) pour enlever un BOM ressemblerait ?

Spécifications :

  • chaque ligne d’impression après le premier ( `` )
  • pour la première ligne : si elle commence par ou , supprimer ces et d’imprimer le reste

125voto

Denilson Sá Points 6953

L'utilisation de GNU sed (sur Linux ou Cygwin):

# Removing BOM from all text files in current directory:
sed -i '1 s/^\xef\xbb\xbf//' *.txt

Sur FreeBSD et Mac OS X:

sed -i .bak '1 s/^\xef\xbb\xbf//' *.txt

Avantage de l'utilisation de GNU ou FreeBSD sed: l' -i paramètre signifie "à la place", et mettra à jour les fichiers sans la nécessité pour les redirections ou des trucs bizarre.

Une astuce similaire peut être réalisé avec n'importe quel programme par de la tuyauterie de l' sponge outil de moreutils:

awk '…' INFILE | sponge INFILE

117voto

Bartosz Points 2183

Essayez ceci :

Profitez !

42voto

Steve Clay Points 3697

Pas d’awk, mais plus simple :

Pour vérifier les BOM :

Si BOM est présent, vous verrez :``

21voto

Lri Points 8342

Outre la conversion CRLF line endings de LF, `` supprime également les nomenclatures :

``convertit également les fichiers UTF-16 avec une marque BOM (mais pas les fichiers sans un BOM UTF-16) en UTF-8 sans une nomenclature :

3voto

Arnon Zamir Points 36

Je sais que la question a été adressée à unix/linux, pensé qu'il serait intéressant de mentionner une bonne option pour les unix-contestée (sur windows, avec une INTERFACE utilisateur).
J'ai rencontré le même problème sur un WordPress projet (BOM a été à l'origine des problèmes avec le flux rss et la validation de la page) et j'ai dû chercher dans tous les fichiers dans un assez grand répertoire de l'arborescence afin de trouver celle qui était avec BOM. Trouvé une application appelée à Remplacer Pionnier et:

Lot de Runner -> Recherche (pour trouver tous les fichiers dans les sous-dossiers) -> Remplacer le Modèle -> Binaire supprimer BOM (il y a un prêt fait de rechercher et de remplacer le modèle pour cette).

Ce n'était pas la solution la plus élégante et elle n'a besoin de l'installation d'un programme, ce qui est un inconvénient. Mais une fois que j'ai découvert ce qui se passait autour de moi, il a travaillé comme un charme (et trouvé 3 fichiers sur environ 2300 qui étaient avec BOM).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X