[AWK] problème while getline break
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:
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:
awk '/^DDF/&&!/RSALS301CT12/ {print ; while (getline line) {if(line !~/DDF/) print line;else break}}' a.txt
Le résultat
Code:
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 ?