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 :
Ma commande
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
Le résultat
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
la ligne DDF01RSISR3 FK5U RSALS301CT120100002620181206005247525R0032018 et les suivantes ne sont pas traitées
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
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 ?
Partager