Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2748 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Help : script awk avec match regexp sur deux lignes

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Help : script awk avec match regexp sur deux lignes

n°1676743
snaguber
Posté le 25-01-2008 à 13:20:57  profilanswer
 

Help : script awk avec match regexp sur deux lignes
 
 
Bonjour,
 
J'ai fait un script awk qui fonctionne pour afficher un nom de job quand le champ de description situé sur une ligne en dessous matche une expression régulière. Par contre je n'arrive pas à inverser le processus (donc a afficher les jobs qui ne matchent pas cette regexp)
 
Le fichier d'entrée :

Code :
  1. JOB1#
  2. Description "MAN ....."
  3. JOB2#
  4. Description "TOP ....."
  5. JOB3#
  6. Description "BABA ...."
  7. JOB4#
  8. Description "MAC ....."


 
Le script awk :

Code :
  1. nawk '{ if (match ($1,"#" )) {JOB=$1} ; if (match ($2, /\"MA[CN]/)) {print JOB} }'


 
La sortie :

Code :
  1. JOB1#
  2. JOB4#


 
Alors que j'aimerais avoir  

Code :
  1. JOB2#
  2. JOB3#


 
J'ai essayé  

Code :
  1. nawk '{ if (match ($1,"#" )) {JOB=$1} ; if (match ($2, ! /\"MA[CN]/)) {print JOB} }'


 
mais ça ne marche pas.
 
Quelqu'un a une idée ?

mood
Publicité
Posté le 25-01-2008 à 13:20:57  profilanswer
 

n°1676761
olivthill
Posté le 25-01-2008 à 13:51:39  profilanswer
 

Si le match est true, alors faire un ou plusieurs

getline

pour récupérer le job.

n°1676806
snaguber
Posté le 25-01-2008 à 14:56:05  profilanswer
 


Merci de ta réponse rapide. Mais je n'y arrive toujours pas.

n°1677025
arsunik
ma tuxitude me beastifie
Posté le 26-01-2008 à 00:53:04  profilanswer
 


awk '
/#/ {JOB=$1}
! /(\"MA[CN]|^$|#)/ { print JOB }
'


 
explication :
1_ on stocke le JOB
2_ pour toutes les lignes qui ne matchent ni ta regexp, ni une ligne vide, ni une ligne "JOB", on affiche le JOB


---------------
[:arsunik]  Les tournois de badminton
n°1677844
snaguber
Posté le 28-01-2008 à 13:21:12  profilanswer
 

arsunik a écrit :


awk '
/#/ {JOB=$1}
! /(\"MA[CN]|^$|#)/ { print JOB }
'


 
explication :
1_ on stocke le JOB
2_ pour toutes les lignes qui ne matchent ni ta regexp, ni une ligne vide, ni une ligne "JOB", on affiche le JOB


 
 
merci beaucoup de ton explication, c'est plus clair comme ça !


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Help : script awk avec match regexp sur deux lignes

 

Sujets relatifs
[PHP] Script Boutique simple sans caddie, pour occasions[Script Shell] Problème pour exécuter des commandes
Lancer un vbs par script de connexionPlayer mp3 en flash problème help !
demande creation script de notification bancaireprobleme de regexp
Séparer et transformer les lignes d'un textarea[ MySQL ] - Problème avec GROUP BY - Help !
script batch pour les dates de modifExécution d'un script ant avec un code JAVA
Plus de sujets relatifs à : Help : script awk avec match regexp sur deux lignes


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR