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
Objets trouvés dans les champs de lignes et d'exploitation ashis.tewari De programmation et de script Shell 3 12-04-2008 09:02 AM
somme de toutes les lignes correspondantes en utilisant awk i.scientist UNIX pour les nuls Questions et réponses 8 08-06-2008 09:13 PM
comment supprimer des doublons de lignes dans un fichier vamshikrishnab De programmation et de script Shell 5 06-18-2008 11:00 AM
Comment faire pour supprimer notamment des lignes à partir d'un fichier suresh3566 De programmation et de script Shell 5 06-02-2008 06:07 AM
Supprimer les lignes répétées à partir d'un fichier TONET De programmation et de script Shell 8 04-08-2008 10:42 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 03-19-2009
Juha Juha is offline
Registered User
  
 

Join Date: Sep 2006
Posts: 36
SED: supprimer ligne correspondante et 4 lignes suivantes?

Salut,

Essayé de chercher de solution, et a trouvé quelque chose de similaire mais ne peut pas adapter la solution à mes besoins ..

J'essaie de trouver un modèle (dans ce cas "ProcessType") dans un fichier journal, puis supprimez cette ligne et les 4 lignes suivantes.

Le fichier journal se présente comme suit:

Code:
ProcessType:    PROCESS_A (0) <---- delete this
SequenceNumber: 8285 <---- delete this
 <---- delete this
2009 Mar 07  22:04:23:679   0:8285 <---- delete this
 <---- delete this
ProcessType:    PROCESS_A (0)
SequenceNumber: 8286

2009 Mar 07  22:04:23:679   0:8286

ProcessType:    PROCESS_B (68)
SequenceNumber: 40689

2009 Mar 07  22:04:23:698  68:40689

DATA that should not be deleted

ProcessType:    PROCESS_B (68)
SequenceNumber: 40690

2009 Mar 07  22:04:23:698  68:40690

DATA that should not be deleted

ProcessType:    PROCESS_C (93)
SequenceNumber: 36235

2009 Mar 07  22:04:23:829  93:36235

ProcessType:    PROCESS_C (93)
SequenceNumber: 36236

2009 Mar 07  22:04:23:829  93:36236

DATA that should not be deleted

J'ai essayé ceci:


Code:
sed -e '/\<ProcessType\>/,/$/d' < log.txt > test

Mais cela a abouti à ce que:


Code:
2009 Mar 07  22:04:23:679   0:8285


2009 Mar 07  22:04:23:679   0:8286


2009 Mar 07  22:04:23:698  68:40689


2009 Mar 07  22:04:23:698  68:40690


2009 Mar 07  22:04:23:829  93:36235


2009 Mar 07  22:04:23:829  93:36236


2009 Mar 07  22:04:23:945  91:89062


2009 Mar 07  22:04:23:945  91:89063


2009 Mar 07  22:04:24:018  91:89064


2009 Mar 07  22:04:24:018  91:89065


2009 Mar 07  22:04:24:018  91:89066

  #2 (permalink)  
Old 03-19-2009
Franklin52 Franklin52 is online now Forum Staff  
Modérateur
  
 

Join Date: Feb 2007
Posts: 4,348
Si awk est permis:


Code:
awk '/ProcessType:/ && !p {i=-4;p=1} i++ > 0' file

Observe
  #3 (permalink)  
Old 03-19-2009
Juha Juha is offline
Registered User
  
 

Join Date: Sep 2006
Posts: 36
Merci Franklin, n'a pas fonctionné pour moi mais ..


Code:
# awk '/ProcessType:/ && !p {i=-4;p=1} i++ > 0' file
awk: syntax error near line 1
awk: bailing out near line 1

Avec nawk il exécute mais ne supprime la première occurrence de ce «bloc»


Code:
# nawk '/ProcessType:/ && !p {i=-4;p=1} i++ > 0' file
ProcessType:    PROCESS_A (0)
SequenceNumber: 8286

2009 Mar 07  22:04:23:679   0:8286

ProcessType:    PROCESS_B (68)
SequenceNumber: 40689

2009 Mar 07  22:04:23:698  68:40689

DATA that should not be deleted

ProcessType:    PROCESS_B (68)
SequenceNumber: 40690
...

  #4 (permalink)  
Old 03-19-2009
Franklin52 Franklin52 is online now Forum Staff  
Modérateur
  
 

Join Date: Feb 2007
Posts: 4,348
J'ai mal compris la question, il faudrait supprimer les 4 premières lignes de tous les blocs:


Code:
nawk '/ProcessType:/{i=-4} i++ > 0' file

Observe
  #5 (permalink)  
Old 03-19-2009
Juha Juha is offline
Registered User
  
 

Join Date: Sep 2006
Posts: 36
Super! Il fonctionne parfaitement! merci
  #6 (permalink)  
Old 03-19-2009
Shahul's Avatar
Shahul Shahul is offline
Registered User
  
 

Date d'inscription: août 2008
Lieu: Inde
Messages: 175
Salut,

Espérons que cela peut aussi vous aider ..


Code:
sed -n  '/ProcessType:/ {n;n;n;n;n;p}' out1.lst

Merci
Sha
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 04:54 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