Aide sur awk

Aide sur awk - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 31-08-2004 à 15:00:13    

Bonjour,
 
J'ai un fichier qui ressemble à ça :
 
...
...
Début script :
mar aoû 31 13:34:26 CEST 2004
...
...
Fin Script :
mar aoû 31 13:47:26 CEST 2004...
...
...
 
Je cherche à récupérer via awk les deux lignes en rouge
Comment faire ?
Merci d'avance

Reply

Marsh Posté le 31-08-2004 à 15:00:13   

Reply

Marsh Posté le 31-08-2004 à 15:05:01    

Euh ou est le début de ton fichier texte, et la fin ?
Qu'est ce que représente "..." ?
 
Rien compris à ton truc là. A mon avis c'est pas avec awk que tu dois faire ça.


Message édité par vanilla le 31-08-2004 à 15:05:09

---------------
Membre du Front de Libération de Datoune | Soutenez le FLD | A Tribute To Datoune
Reply

Marsh Posté le 31-08-2004 à 15:06:09    

Les ... indiquent d'autres lignes de texte qui ne m'intéressent pas.
Il y en a avant et après les lignes qui m'intéressent

Reply

Marsh Posté le 31-08-2004 à 15:06:44    

awk '$5=="CEST" { print }'


Message édité par arsunik le 31-08-2004 à 15:07:37
Reply

Marsh Posté le 31-08-2004 à 15:08:26    

Mouais...


---------------
Membre du Front de Libération de Datoune | Soutenez le FLD | A Tribute To Datoune
Reply

Marsh Posté le 31-08-2004 à 15:11:05    

ArSuniK a écrit :

awk '$5=="CEST" { print }'

Mais un grep serait mieux là non :??:


---------------
"L'abus de modération, nuit gravement à la consommation"
Reply

Marsh Posté le 31-08-2004 à 15:12:55    

ArSuniK a écrit :

awk '$5=="CEST" { print }'


non il me faut quelque chose qui soit déclenché par les phrases "Début du script" ou "Fin du script" et qui prenne la ligne suivante
Je crois que c'est possible avec une option de awk mais je ne retrouve pas laquelle
avec "CEST" cela ne fonctionne pas car le contenu n'est pas forcément une date

Reply

Marsh Posté le 31-08-2004 à 15:14:39    

Code :
  1. awk '
  2. begin { flag_debut = 0 ; flag_fin = 0 }
  3. {
  4. if ( flag_debut == 1 ){
  5. print $0 ;
  6. flag_debut = 0 ;
  7. }
  8. if ( $0 == "Début script" )
  9. flag_debut = 1 ;
  10. }
  11. '


 
etc ...

Reply

Marsh Posté le 31-08-2004 à 15:18:48    

jc the great a écrit :

Code :
  1. awk '
  2. begin { flag_debut = 0 ; flag_fin = 0 }
  3. {
  4. if ( flag_debut == 1 ){
  5. print $0 ;
  6. flag_debut = 0 ;
  7. }
  8. if ( $0 == "Début script" )
  9. flag_debut = 1 ;
  10. }
  11. '


 
etc ...


Merci bcp
A+

Reply

Marsh Posté le 31-08-2004 à 15:21:17    

Autre question : je doit utiliser ce mini-programme plusieurs fois dans mon script en modifiant la chaine "Debut script".
Comment ne pas le réécrire à chaque fois ?

Reply

Marsh Posté le 31-08-2004 à 15:21:17   

Reply

Marsh Posté le 31-08-2004 à 15:28:14    

il est en quoi ton script ?
en bash :


function get_date() {
awk '
BEGIN { ...
if ( $0 == "'$1'" ) ...
}'
}
 
# exemple d'appel :
cat fichier | get_date "Debut script"


Reply

Marsh Posté le 31-08-2004 à 15:30:56    

m'enfin ça serait plus vite écrit avec un grep et un tail :)


echo "...
...
Début script :
mar aoû 31 13:34:26 CEST 2004" | grep -A 1 "Début script :" | tail -n 1


Message édité par bobuse le 31-08-2004 à 15:31:45
Reply

Marsh Posté le 01-09-2004 à 12:53:28    

grep -A  :jap:

Reply

Sujets relatifs:

Leave a Replay

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