Bonjour à tous,
Je tourne en rond avec une petite boucle en awk
Je souhaite afficher le contenu d'un fichier en supprimant la ligne commençant par DDF et ne contenant pas RSALS301CT12
puis les lignes suivantes (qui ne commencent pas par DDF) jusqu'au prochain DDF et autres lignes qu'il faudra afficher.
Mon problème vient de l'instruction break qui sort de la boucle car le critère n'est pas rencontré (normal) mais la ligne DDF suivante n'étant alors pas traitée.

Fichier source :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
DDF01RSISR3  FK5U    RSALS301CT800100002720181206005541529R0032018
CT80
CT80
DDF01RSISR3  FK5U    RSALS301CT130100002220181206005724696R0032018
CT13
DDF01RSISR3  FK5U    RSALS301CT120100002620181206005247525R0032018
CT12
CT12
CT12
DDF01RSISR3  FK5U    RSALS301CT350100002420181206005728097R0032018
CT35
DDF01RSISR3  FK5U    RSALS301CT510100002620181206005188422R0032018
CT51
DDF01RSISR3  FK5U    RSALS301CT210200002320181206004754950R0032018
CT21
Ma commande
Code : Sélectionner tout - Visualiser dans une fenêtre à part
awk '/^DDF/&&!/RSALS301CT12/ {print ; while (getline line) {if(line !~/DDF/) print line;else break}}' a.txt
Le résultat
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
DDF01RSISR3  FK5U    RSALS301CT800100002720181206005541529R0032018
CT80
CT80
DDF01RSISR3  FK5U    RSALS301CT350100002420181206005728097R0032018
CT35
DDF01RSISR3  FK5U    RSALS301CT210200002320181206004754950R0032018
la ligne DDF01RSISR3 FK5U RSALS301CT120100002620181206005247525R0032018 et les suivantes ne sont pas traitées
et c'est ce que je voulais, mais d'autres sont également passées à la trappe (une sur deux à cause du break)
Je pense que ma commande n'est pas appropriée à ce cas ?