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

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  AWK recherche dans un fichier a entete

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

AWK recherche dans un fichier a entete

n°1204149
Z_cool
HFR profile rating:⭐⭐⭐⭐
Posté le 11-03-2010 à 15:24:44  profilanswer
 

Salut,
 
Je cehrche a me faire un script AWK assé particulier pour rechercher dans une fichier de log qui contient une entete.
Pas exemple :
 

nom       prénom        age
tata      Annabelle      12
Mireille  Math            3
tutu      berth          25


 
 
 
Je pourrais le faire avec $1, $2. mais le problème c'est que le fichier source est susceptible d'évoluer. j'aurais aimer le faire avec $nom $prenom,...
 
 
et j'ai pas trouvé de solution pour ca.  
 
 
une idée ?


---------------
#mais-chut
mood
Publicité
Posté le 11-03-2010 à 15:24:44  profilanswer
 

n°1204152
Z_cool
HFR profile rating:⭐⭐⭐⭐
Posté le 11-03-2010 à 15:26:00  profilanswer
 

pour compliquer la chose, la ligne qui contient les entente est en fait la 4iem lignes du fichier


---------------
#mais-chut
n°1204174
Fork Bomb
Obsédé textuel
Posté le 11-03-2010 à 16:11:20  profilanswer
 

Z_cool a écrit :

pour compliquer la chose, la ligne qui contient les entente est en fait la 4iem lignes du fichier


Recuperer la ligne X
cat PWET|awk 'NR == X {print;}'  
 
PWET, c'est mon fichier texte, bien sûr.


---------------
Décentralisons Internet-Bépo-Troll Bingo - "Pour adoucir le mélange, pressez trois quartiers d’orange !"
n°1204244
twocats
Posté le 11-03-2010 à 22:51:58  profilanswer
 

Fork Bomb a écrit :


Recuperer la ligne X
cat PWET|awk 'NR == X {print;}'  
 
PWET, c'est mon fichier texte, bien sûr.


Useless use of cat :

awk 'NR == X {print;}' PWET


---------------
La réponse est 42
n°1204306
Z_cool
HFR profile rating:⭐⭐⭐⭐
Posté le 12-03-2010 à 11:31:48  profilanswer
 

en fait, cela m'affiche la ligne X en question qui contient les noms de colonnes
 
a partir de ca, j'aimerais pourvoir  faire un :
 
awk '$prenom~/Math/ {print $age, $nom}' PWET
 
c'est possible ca ?
 


---------------
#mais-chut
n°1204322
Z_cool
HFR profile rating:⭐⭐⭐⭐
Posté le 12-03-2010 à 12:38:06  profilanswer
 

J'ai quasi trouvé :  
http://unstableme.blogspot.com/200 [...] r-awk.html


---------------
#mais-chut
n°1206108
sputnick
bip...bip...bip...bip...bi...b
Posté le 22-03-2010 à 19:24:20  profilanswer
 

Pour recuperer un champ par son nom :

Code :
  1. #!/bin/gawk -f
  2. BEGIN{
  3.     c=0
  4. }
  5. {
  6.     if (NR==1) {
  7.         for (i=1; i<NF; i++) {
  8.             if ($i ~ var) {
  9.                 var=i
  10.             }
  11.         }
  12.     }
  13.     else {
  14.         if (NR > 1 && var>0 ) { print $var }
  15.     }
  16. }


 

Code :
  1. var=prénom <PATH/TO/script.awk> <FICHIER SOURCE>

n°1207170
p-seeker23
Posté le 26-03-2010 à 12:38:28  profilanswer
 

awk 'NR>k{print $k}' k=$(awk 'NR==4{ for (i=1;i<=NF;i++) { if ($i ~ "Math" ) {print i; exit;} } }' Fichier.log) Fichier.log


4 = n° de ligne où se trouvent les entêtes. A déterminer avec un grep si besoin de généraliser encore.
"Math": l'entête voulue contient "Math". On peut remplacer par un == pour un match exact.

n°1214108
Z_cool
HFR profile rating:⭐⭐⭐⭐
Posté le 28-04-2010 à 15:00:00  profilanswer
 

Re-salut tout le monde.

 


Bon, j'ai pas mal avancé sur mon problème mais je me retrouve face a un autre. En fait j'utilise AWK sous windows, avec la ligne de  commande :

 

awk -v date=%date% -v server=%COMPUTERNAME% -f c:\scriptawkConfig.txt L:\Proxylog\ISALOG_%lastDayLogFile%_WEB_00*.w3c

 


Le fichier c:\script\awkConfig.txt:

BEGIN  {
 F="\t" ; FS="\t"; OFS=";"; c=0
 print "clientIP", "csusername", "Fdate", "Ftime", "ThreatName", "csuri" ,"csreferred" > server"_Report_Virus_"date".csv"
 print "clientIP", "csusername", "Fdate", "Ftime", "csuri", "rip" > server"_Internet_Trafic_"date".csv"
 }

 

NR == 4 {
  for (i=1;i<=NF;i++) {  
   if ($i=="MalwareInspectionThreatLevel" )   { MalwareLevel=i }
   if ($i=="#Fields: c-ip" )     { clientIP=i }
   if ($i~/date/)       { Fdate=i }
   if ($i=="time" )      { Ftime=i }
   if ($i=="cs-referred" )      { csreferred=i }
   if ($i=="cs-username" )      { csusername=i }
   if ($i=="ThreatName" )      { ThreatName=i }
   if ($i=="cs-uri" )      { csuri=i }
   if ($i=="r-host" )      { rhost=i }
   if ($i=="r-ip" )      { rip=i }
   if ($i=="cs-referred" )      { csreferred=i }
   }
 }

 

NR > 4 &&  $MalwareLevel!~/-/ && $1!~/#/ {print $clientIP, $csusername, $Fdate, $Ftime, $ThreatName, $csuri ,$csreferred > server"_Report_Virus_"date".csv"}

 

NR > 4 && ($rip~/10.4.98.225/ || $rip~/10.4.98.227/) && $1!~/#/ { print $clientIP, $csusername, $Fdate, $Ftime, $csuri, $rip > server"_Internet_Trafic_"date".csv"}

  


Je génère donc deux fichiers CSV a partir d'un autre, mais tout deux sont placé dans le répertoire d'exécution, j'aurais voulus les mettre sur une autre partition avec un truc du genre :

.....> "d:\"server"_Internet_Trafic_"date".csv"


mais le "\" semble poser pas mal de problème.

 

une idée ?


Message édité par Z_cool le 28-04-2010 à 15:06:52

---------------
#mais-chut
n°1215482
Z_cool
HFR profile rating:⭐⭐⭐⭐
Posté le 03-05-2010 à 09:55:07  profilanswer
 

non ? plus d'idee ?


---------------
#mais-chut
mood
Publicité
Posté le 03-05-2010 à 09:55:07  profilanswer
 

n°1215548
mrbebert
Posté le 03-05-2010 à 12:52:53  profilanswer
 

C'est un caractère spécial, faut pas juste le doubler :??:

.....> "d:\\"server"_Internet_Trafic_"date".csv"


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  AWK recherche dans un fichier a entete

 

Sujets relatifs
Recup de fichier depuis livecdcréer répertoire selon le nom de fichier
Fichier Bat copie sans précisionssuppression en masse et rapide de fichier
Impossible de supprimer un fichier sous serveur DebianVMware - principe de stockage serveur de fichier
Script Unix (sh) - Créer un fichier .log - Récupérer message d'erreur[vim] commandes en tête de fichier texte [résolu]
[RESOLU] renommer un fichier commencant par -T 
Plus de sujets relatifs à : AWK recherche dans un fichier a entete


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