Voici un exemple:
En text ça doit donner un truc comme ça:
(2 fois le code 00 en hexa)(id = numéro sur 2 caractères)(2 fois le code 00 en hexa)(nom)(2 fois ou plus le code 00 en hexa)blabla
En hexa:
00 00 0a 01 00 00 05 26 05 26 43 00 68 00 61 00 6f 00 73 00 20 00 49 00 6d 00 70 00 61 00 63 00 74 00 b7 00 4e 00 69 00 72 00 76 00 61 00 6e 00 61 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 4d 6f 64 65 6c 73
Et j'aimerais avoir ça (le 01 et le 0a doivent être inversés, 3b est le ";" en hexa)
01 0a 3b 05 26 05 26 43 00 68 00 61 00 6f 00 73 00 20 00 49 00 6d 00 70 00 61 00 63 00 74 00 b7 00 4e 00 69 00 72 00 76 00 61 00 6e 00 61
Merci frp31
sed "N;N; s/\x00\x00\(.\)\(.\)\x00\x00/\2\1;/g" ligne_du_fichier
Ca remet bien les codes hexa de l'id en place. L'id pourrait être 0a 0a en hexa donc il faut "N;" 2 fois. Je rajoute 2 sauts de ligne à la fin de la ligne pour assurer le coup.
Un petit head et la suppression des 00 en trop et c'est ok pour cette partie.
J'étais parti sur l'utilisation du head et du tail pour isoler les 2 caractères de l'id, mais le sed est plus simple (et sans doute plus rapide).
Il ne me reste plus qu'à convertir l'identifiant en décimal.
C'est un fichier dont j'essaye de récupérer les info. Le fichier est d'origine chinoise, donc ils s'amusent à écrire l'identifiant de droite à gauche 
(0a 01) à l'origine => (01 0a) après être remis dans le bon ordre => 266 en décimal.
J'ai trouvé ça mais ça ne fonctionne qu'avec un seul caractère.
echo 'a'|od -N 1 -i|head -1|tr -s " "|cut -d " " -f 2
Partager