Help : script awk avec match regexp sur deux lignes

Help : script awk avec match regexp sur deux lignes - Shell/Batch - Programmation

Marsh Posté le 25-01-2008 à 13:20:57    

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 ?

Reply

Marsh Posté le 25-01-2008 à 13:20:57   

Reply

Marsh Posté le 25-01-2008 à 13:51:39    

Si le match est true, alors faire un ou plusieurs

getline

pour récupérer le job.

Reply

Marsh Posté le 25-01-2008 à 14:56:05    


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

Reply

Marsh Posté le 26-01-2008 à 00:53:04    


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
Reply

Marsh Posté le 28-01-2008 à 13:21:12    

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 !

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed