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

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  ptite aide gawk pour afficher la ligne que je veux

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

ptite aide gawk pour afficher la ligne que je veux

n°1214685
damcmoi
Posté le 04-10-2005 à 16:10:49  profilanswer
 

Salut les gars :)
je voudrais faire la chose suivante : je veux savoir là où ya marqué "Error" dans mon fichier "donnees.dat" et afficher la 5è ligne qui suit ce "Error", ce que je peux illustrer par le script suivant :
 

#!/bin/bash
 
gawk ' BEGIN { FS=" = "}
  $2 == "Error" { NR=NR+5 ; print $0 }
  END { }' donnees.dat
 


 
comme vous pouver vous en douter le NR=NR+5 ne marche pas. Quelqu'un saurait comment faire ?

mood
Publicité
Posté le 04-10-2005 à 16:10:49  profilanswer
 

n°1214785
damcmoi
Posté le 04-10-2005 à 17:40:07  profilanswer
 

je crois que ça marche avec :
 

#!/bin/bash
 
gawk ' BEGIN { FS=" = " }
  $2 == "Error" { getline;getline;getline;getline;getline; print $0 }
  END { }' donnees.dat


 
mais c'est pas hyper joli. mais bon tant que ça marche. si qq'un a mieux :)
 
j'ai trouvé un super poly de l'ensimag sur awk/gawk : http://ploug.eu.org/doc/principe-awk-lacroix.pdf
 
merci.

n°1215436
Deadlock
Feck off, cup !
Posté le 05-10-2005 à 13:29:37  profilanswer
 

Une solution parmis tant d'autres ...
 

gawk '
BEGIN { FS=" = " ; NR5 = 0 }
{
if ( $2 == "Error" ) {
        NR5 = NR + 5 ; next
} else {
        if ( NR == NR5 ) { print $0 ; next } { next }
}
}' donnes.dat



---------------
Institutions européennes: Ensemble d'outils dont le but est de transformer une grande quantité d'argent en merde. Cette merde est utilisée pour créer de nouveaux fonctionnaires. L'argent restant payant des externes pour faire leur travail.
n°1215638
damcmoi
Posté le 05-10-2005 à 15:41:37  profilanswer
 

Merci Deadlock  :)  
 
Et sinon dernière question parce que celle là je vois vraiment pas....  :??:  
Ya moyen d'utiliser ds un gawk une variable shell?
du genre
 


#!/bin/bash
read var
 
gawk ' BEGIN { FS="="}
$1 == "variable_a_modifier" {$2 = system("echo $var" )}
END {}' fichier_a_modifier


 
je voudrais bien entendu lire une variable au clavier et que mon script ci dessus modifie l'affectation de "variable_a_modifier" dans le "fichier_a_modifier". là ça marche pas ça l'affiche à l'écran, et encore avec un export de var....
 
Merci les gars, en particulier Deadlock qui répond présent à chaque fois que je post  :jap:  
 

n°1215670
Deadlock
Feck off, cup !
Posté le 05-10-2005 à 16:19:13  profilanswer
 

Pour passer une variable Shell à AWK tu utilises l'option -v :

read var
gawk -v AwkVar=$var ' BEGIN ...


La variable AwkVar dans le code awk aura la valeur de $var du shell ;)


---------------
Institutions européennes: Ensemble d'outils dont le but est de transformer une grande quantité d'argent en merde. Cette merde est utilisée pour créer de nouveaux fonctionnaires. L'argent restant payant des externes pour faire leur travail.
n°1215695
damcmoi
Posté le 05-10-2005 à 16:43:22  profilanswer
 

Merci Deadlock, t'es vraiment trop compétent.... :jap:

n°1216115
el muchach​o
Comfortably Numb
Posté le 06-10-2005 à 05:07:18  profilanswer
 

Ceci dit, au-delà de 10 lignes, je lâcherais awk pour perl (plus facile à apprendre, rapide, pratique).

Message cité 1 fois
Message édité par el muchacho le 06-10-2005 à 05:12:42

---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
n°1216120
Deadlock
Feck off, cup !
Posté le 06-10-2005 à 08:05:23  profilanswer
 

el muchacho a écrit :

Ceci dit, au-delà de 10 lignes, je lâcherais awk pour perl (plus facile à apprendre, rapide, pratique).

Ca dépend du "passif" ... je suis sysadmin depuis plus de 12 ans, quand j'ai commencé, perl n'existait pas, donc j'ai pris l'habitude de scripter en AWK ... et celà pour du code dépassant parfois largement la 100aine de lignes. Perl, je fais joujou avec mais c'est tout ... c'est peut être plus rapide (et plus puissant via les modules) mais je n'en ai pas l'utilité, sauf dans de rares cas pour des accès oracle via DBI/DBD.


---------------
Institutions européennes: Ensemble d'outils dont le but est de transformer une grande quantité d'argent en merde. Cette merde est utilisée pour créer de nouveaux fonctionnaires. L'argent restant payant des externes pour faire leur travail.

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

  ptite aide gawk pour afficher la ligne que je veux

 

Sujets relatifs
imprimer pdf en ligne de commandeCSS : Afficher un bloc lors du survol d'un lien
compte le nombre de ligneGestion des options/ parametres en ligne de commande
Afficher une image dans un email[Excel VBA] Ne pas afficher les lignes masquées d'un plan
[Shell] lecture d'un fichier txt ligne par ligneAide Reqête SQL avec 3 tables
Video : afficher la lecture en _selfComment garder le retour à la ligne d'un TEXTAREA ??
Plus de sujets relatifs à : ptite aide gawk pour afficher la ligne que je veux


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