Awk if: condition sur le print
marwai
Messages postés
8
Statut
Membre
-
dubcek Messages postés 18804 Date d'inscription Statut Contributeur Dernière intervention -
dubcek Messages postés 18804 Date d'inscription Statut Contributeur Dernière intervention -
Salut!
Je suis sur un petit code avec awk: je cherche un motif, et si il est trouvé je souhaite printer les 3 lignes suivantes. Sans le if aucun problème:
Mais avec un if, je bloque sur la condition avant le print (je souhaite faire un autre traitement si le motif n'est pas trouvé). Notamment j'ai une erreur de syntaxe qui point sur le print
Si quelqu'un a une solution, merci d'avance!
Je suis sur un petit code avec awk: je cherche un motif, et si il est trouvé je souhaite printer les 3 lignes suivantes. Sans le if aucun problème:
awk '/motif/ {x=NR+3}(NR<=x) {print > "sortie"}' input
Mais avec un if, je bloque sur la condition avant le print (je souhaite faire un autre traitement si le motif n'est pas trouvé). Notamment j'ai une erreur de syntaxe qui point sur le print
awk '{ if (/motif/) {x=NR+3}(NR<=x) {print > "sortie"};} else
Si quelqu'un a une solution, merci d'avance!
A voir également:
- Awk if: condition sur le print
- If exist - Forum Programmation
- Php if multiple conditions ✓ - Forum PHP
- The realtek network controller was not found. if deep sleep mode is enabled please plug the cable ✓ - Forum Pilotes (drivers)
- Awk -f ✓ - Forum Linux / Unix
- The Realtek Network Controller was not found. - Forum Pilotes (drivers)
Je pense que la réponse à ta question est non (je ne la comprends pas très bien XD): exemple:
blablablamotifblabla
blablablamotifblabla
blablabla
blablabla
je voudrais avoir:
blablablamotifblabla
blablablamotifblabla
blablabla
puis
blablablamotifblabla
blablabla
blablabla
Peut être que la question est un peu trop spécialisée: d'une manière générale je voudrais juste savoir comment faire accepter un truc type {x=NR+3}(NR<=x) avant le print dans un awk if
pour ton exemple, puisqu'on imprime 2 fois la 1ère ligne blablabla, il faut stocker les lignes, je ferais comme ça
$ awk '{t[NR]=$0} /motif/ {s[++n]=NR} END {for(a=1; a<=n; a++){for(b=0;b<3;)print t[s[a]+b++]; print ""}}' fichier
blablablamotifblabla
blablablamotifblabla
blablabla
blablablamotifblabla
blablabla
blablabla