Décrypter commande awk
Fermé
Scoob16
-
Modifié le 6 mai 2022 à 17:12
mamiemando Messages postés 33433 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 17 décembre 2024 - 6 mai 2022 à 17:36
mamiemando Messages postés 33433 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 17 décembre 2024 - 6 mai 2022 à 17:36
A voir également:
- Décrypter commande awk
- Invite de commande - Guide
- Commande terminal mac - Guide
- Commande dism - Guide
- Diskpart commande - Guide
- Dvd decrypter en français - Télécharger - Copie & Extraction
1 réponse
mamiemando
Messages postés
33433
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
17 décembre 2024
7 809
6 mai 2022 à 17:36
6 mai 2022 à 17:36
Bonjour,
Sans le fichier d'entrée que ce script
Voici en gros ce que fait ton script :
Il est d'ailleurs intéressant de souligner que la personne qui a écrit ce script ne devait pas être familière de
Bonne chance
Sans le fichier d'entrée que ce script
awktraite, il n'est pas forcément très simple d'expliquer ce que ça fait, mais en gros ça lit un fichier d'entrée ligne par ligne et ne réécrit que certaines lignes (éventuellement en les modifiant). Les fonctions
awksont documentées dans
man awk. Il peut être intéressant de lire un tutoriel sur les expressions rationnelles.
Voici en gros ce que fait ton script :
- l3-7 : si la ligne courante du fichier commence par
0128000MU
et qu'aux caractères 38-39 il est écrit "02" et que le caractère 42 est "1", alors flag passe à 1 et la ligne est écrite. C'est probablement pour détecter un début de section de texte intéressante pour la suite du script. - l8-23 : si la ligne courante du fichier commence par
0128
et queflag
vaut "1" alors- l11: tant que
var
(initialisé à la ligne courante$0
) contient "14099", suivi de 0 ou plusieurs espaces, suivi d'une suite d'entiers compris entre 0 et 9, suivi de 0 ou plusieurs espaces , suivi d'un caractère majuscule alors on extrait ce bout dansvar_init
. - l13-17 : l'idée est ici de reconstruire
var_fin
à partir devar_init
(en remplaçant l'éventuel "C" au caractère 14 par un "A"). - l18: on remplace dans la ligne courante les occurrences de
var_init
parvar_fin
. - l20: on passe au bout suivant de chaîne suivant.
- l22: le
while
a pris fin, donc on a extrait tous les bouts et on passeflag
à 0.
- l11: tant que
- l24-26 : si
flag
vaut 0 on écrit la ligne courante.
Il est d'ailleurs intéressant de souligner que la personne qui a écrit ce script ne devait pas être familière de
awk, car normalement on ne met pas de ";" derrière les "}", et tout a été écrit dans le bloc BEGIN, ce qui laisse entendre que seule la première ligne du fichier d'entrée est prise en compte. Ensuite toute la boucle 11-20 se réécrit probablement plus simplement avec la fonction
gsubde
awk.
Bonne chance