Essayez ce:
awk 'NR==1{sub(/^\xef\xbb\xbf/,"")}{print}' INFILE > OUTFILE
Sur le premier enregistrement (ligne), supprimez les caractères de la nomenclature. Imprimer chaque enregistrement.
ou légèrement plus courte, en utilisant les connaissances que l'action par défaut dans awk est d'imprimer l'enregistrement:
awk 'NR==1{sub(/^\xef\xbb\xbf/,"")}1' INFILE > OUTFILE
1
est la plus courte condition est toujours vraie, de sorte que chaque enregistrement est imprimé.
Profitez-en!
- ADDENDA -
Unicode Byte Order Mark (BOM) FAQ comprend le tableau suivant liste la nomenclature exacte octets pour chaque encodage:
Bytes | Encoding Form
--------------------------------------
00 00 FE FF | UTF-32, big-endian
FF FE 00 00 | UTF-32, little-endian
FE FF | UTF-16, big-endian
FF FE | UTF-16, little-endian
EF BB BF | UTF-8
Ainsi, vous pouvez voir comment \xef\xbb\xbf
correspond à EF BB BF
UTF-8
BOM octets de le tableau ci-dessus.
Il semble que le point au milieu de la sous-déclaration est trop (au moins, mon awk se plaint à ce sujet). A côté de cela, c'est exactement ce que j'ai cherché, merci! – Boldewyn
Cette solution, cependant, fonctionne ** seulement ** pour les fichiers codés en UTF-8. Pour d'autres, comme UTF-16, voir Wikipedia pour la représentation de nomenclature correspondante: http://en.wikipedia.org/wiki/Byte_order_mark – Boldewyn
Je suis d'accord avec le commentaire précédent; le point n'appartient pas au milieu de cette déclaration et fait de ce petit bout de code un exemple d'erreur de syntaxe awk. –