Bonjour,
En fait ton souci selon les informations que tu nous a données, est que les 3 patterns de référence que tu utilises ne se trouvent pas sur la même ligne et a priori, ce qui t'interesse est de prendre un bloc qui commence par "3HKP0000Y", qui finit par "EOF" et il faut que dans ce bloc, il y est "Version".
Donc si tu veux le faire en sed, l'une des façons de faire:
-ramener toutes les lignes se trouvant entre "3HKP0000Y" et "EOF" dans le buffer auxiliaire de sed
-Lorsque ligne avec EOF atteint:
-On copie le buffer auxiliaire vers le buffer pattern de sed
-Si on trouve le mot Version dans le buffer pattern de sed, alors on affiche se buffer.
-On vide ensuite le buffer pattern et on echange les buffer (ceci dans le cas où il y plusieurs blocs dans le fichier)
ce qui donne:
sed -n '/^3HKP0000Y/,/EOF/H;/EOF/{g;/Version/{s/^\n//;p};s/.*//;x}' ../Monfichierbinaire
Ici, on utilise l'option -n de sed car ici sed ne doit pas afficher le buffer pattern que sur demande et la commande 's/^\n//' supprime le '\n' qui est rajouter par sed lors de l'execution de la commande 'H'.
Cordialement.
Partager