The UNIX and Linux Forums  


Go Back   Les systèmes UNIX et Linux Forums > Top Forums > De programmation et de script Shell
.
google unix.com



De programmation et de script Shell Posez vos questions à propos de KSH, CSH, SH, BASH, PERL, PHP, SED, awk et d'autres scripts shell et les langages de script shell ici.

Plus d'UNIX et Linux Forum Sujets Vous trouverez peut-être utile
Fil Thread Starter Forum Réponses Last Post
changer l'affichage variable en un seul endroit sur l'écran en ksh raidzero De programmation et de script Shell 7 09-25-2008 10:24 AM
rediffusion. profile après avoir changé la variable sboxtops AIX 2 09-02-2008 03:19 PM
l'exécution de script bash avec une variable dans une seule ligne shoeb De programmation et de script Shell 1 07-06-2008 05:14 AM
IFS de changer la valeur de la variable pvar De programmation et de script Shell 1 02-25-2005 06:21 PM
Très simple question sur la modification de variable PS1 au démarrage! abidmalik UNIX pour les nuls Questions et réponses 2 08-26-2002 02:05 AM

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Recherche sur ce Thread Rate Thread Modes d'affichage
  #1 (permalink)  
Old 11-18-2008
sx3v1l_1n51de sx3v1l_1n51de is offline
Registered User
  
 

Join Date: Jan 2005
Messages: 27
Talking Aide à la awk script, changer les FS pour une seule variable

Salut à tous, dans le nouveau et awk pour apprécier si vous pouviez me dire comment faire, j'ai un fichier avec plusieurs entrées comme ceci:


Code:
2008-09-09 21:57:45   44  403 CUSTOM_EVENT                      Upgrade - end1
2008-09-09 21:57:46   45  403 CUSTOM_EVENT                      Component Check - start
2008-09-09 21:57:56   46  403 CUSTOM_EVENT                      Component Check - end
2008-09-09 21:57:56   47  403 CUSTOM_EVENT                      OSChecksum - start
2008-09-09 21:59:15   48  403 CUSTOM_EVENT                      OSChecksum - end
2008-09-09 21:59:15   49  403 CUSTOM_EVENT                      SELLogCheck - start
2008-09-09 22:01:39   50  403 CUSTOM_EVENT                      SELLogCheck - end
2008-09-09 22:01:40   51  403 CUSTOM_EVENT                      USB to Serial Connection Test - start
2008-09-09 22:43:46   52  403 CUSTOM_EVENT                      USB to Serial Connection Test - start
2008-09-09 22:44:15   53  403 CUSTOM_EVENT                      MemoryCheck - start
2008-09-09 22:44:16   54  403 CUSTOM_EVENT                      MemoryCheck - end

im essayant d'obtenir les valeurs sur le dernier champ, qui serait la description de l'événement (par exemple, la connexion USB vers série Test - start), mais j'ai besoin de plus de séparer ce domaine avec un «-» pour savoir si le test a commencé ou de mettre fin, le dernier champ est un peu variable et j'ai donc pensé y pourrait utiliser quelque chose comme ceci:

cat $ 1 | awk '(description \u003d $ 6 "" $ 7 "" $ 8 "" $ 9 "" $ 10 "" $ 11 "" $ 12 "" $ 13 "" $ 14 "" 15 $; description print)'

J'ai d'abord obtenir l'ensemble des domaines de 6 à 15, et ensuite, changer les i tryed FS - et le deuxième champ d'impression ...

cat $ 1 | awk '(description \u003d $ 6 "" $ 7 "" $ 8 "" $ 9 "" $ 10 "" $ 11 "" $ 12 "" $ 13 "" $ 14 "" 15 $; FS \u003d "-"; description print $ 2)'

bien sûr, qui affiche le second champ de la ligne entière, ce qui est de l'année ... hehe ... y at-il une façon de dire à awk à la variable de sortie du second champ délimité par un "-"?

remercie tous les
  #2 (permalink)  
Old 11-18-2008
radoulov's Avatar
radoulov radoulov is online now Forum Staff  
addict
  
 

Join Date: Jan 2007
Lieu: Варна, България / Milano, Italia
Posts: 2,916
Avec AWK:


Code:
awk '{
  for (i=6; i<=NF; i++) 
    s = s ? s FS $i : $i    
  split(s, t, "-")
  print "desc:", t[1], "state:", t[2]
  s = ""  
}' infile

Avec Perl:


Code:
perl -lane'
  print "desc: @F[5..$#F-2] state: $F[-1]"
  ' infile

  #3 (permalink)  
Old 11-18-2008
radoulov's Avatar
radoulov radoulov is online now Forum Staff  
addict
  
 

Join Date: Jan 2007
Lieu: Варна, България / Milano, Italia
Posts: 2,916
En fait, vous n'avez pas besoin de diviser explicitement à l'AWK:


Code:
awk '{
  for (i=6; i<=NF-2; i++) 
    s = s ? s FS $i : $i    
  print "desc:", s, "state:", $NF
  s = ""  
}' infile


Dernière édition par radoulov; au 11.18.2008 04:17 PM..
  #4 (permalink)  
Old 11-18-2008
joeyg's Avatar
joeyg joeyg is offline Forum Staff  
modérateur
  
 

Join Date: Dec 2007
Lieu: Accueil de 17-champion du monde Boston Celtics
Messages: 1311
Cool Vous n'êtes pas sûr de votre résultat désiré, mais

J'ai ajouté un commentaire pour montrer que les deux domaines ont été séparés, et a ajouté le "ed" verbe à l'action (juste parce qu'il sonne mieux de cette façon).


Code:
> cat file74
2008-09-09 21:57:45   44  403 CUSTOM_EVENT                      Upgrade - end1
2008-09-09 21:57:46   45  403 CUSTOM_EVENT                      Component Check - start
2008-09-09 21:57:56   46  403 CUSTOM_EVENT                      Component Check - end
2008-09-09 21:57:56   47  403 CUSTOM_EVENT                      OSChecksum - start
2008-09-09 21:59:15   48  403 CUSTOM_EVENT                      OSChecksum - end
2008-09-09 21:59:15   49  403 CUSTOM_EVENT                      SELLogCheck - start
2008-09-09 22:01:39   50  403 CUSTOM_EVENT                      SELLogCheck - end
2008-09-09 22:01:40   51  403 CUSTOM_EVENT                      USB to Serial Connection Test - start
2008-09-09 22:43:46   52  403 CUSTOM_EVENT                      USB to Serial Connection Test - start
2008-09-09 22:44:15   53  403 CUSTOM_EVENT                      MemoryCheck - start
2008-09-09 22:44:16   54  403 CUSTOM_EVENT                      MemoryCheck - end

> cut -c65- file74 | awk '{FS="-"}{print $1" _which was_ "$2"ed"}'
Upgrade _which was_ -ed
Component Check  _which was_  started
Component Check  _which was_  ended
OSChecksum  _which was_  started
OSChecksum  _which was_  ended
SELLogCheck  _which was_  started
SELLogCheck  _which was_  ended
USB to Serial Connection Test  _which was_  started
USB to Serial Connection Test  _which was_  started
MemoryCheck  _which was_  started
MemoryCheck  _which was_  ended

Closed Thread

Bookmarks

Thread Tools Recherche sur ce Thread
Recherche sur ce Thread:

Recherche avancée
Modes d'affichage Rate this thread
Rate this thread:

Règles de messages
Tu mai pas de nouvelles discussions: nonoui
Tu mai pas envoyer des réponses:
Tu mai pas envoyer des pièces jointes
Tu mai pas modifier vos messages

BB code est Sur
Smilies sont Sur
[IMG] code est Sur
Le code HTML est Hors tension
Trackbacks sont Sur
Pingbacks sont Sur
Refbacks sont Sur




Toutes les heures sont au format GMT -4. Le temps est maintenant 08:33 AM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Traductions Langue Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
Les systèmes UNIX et Linux Forums Content Copyright © 1993-2009. Tous droits Reserved.Ad de gestion par RedTyger

Content Relevant URLs par vBSEO 3.2.0