Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/04/2007, 15h17   #1
Invité de passage
 
Inscription : avril 2007
Messages : 11
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 11
Points : 3
Points : 3
Par défaut decoupage avec awk + sed

Bonjour,

j'ai un fichier qui se presente comme suit par exemple:

aa.bb.cc.dd.inf on off serv1
ee.qq.srv off on serv2
oo.zz.tt.uu.pp.aa.cs off on serv3

Je voudrai au final afficher (en suivant l'exemple du dessus):

dd inf on off serv1
qq srv off on serv2
aa cs off on serv3

J'ai testé plein de choses avec sed et hawk combiné mais rien n'y fait.
Un idée??
killapig est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/04/2007, 15h29   #2
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 8 306
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 8 306
Points : 8 590
Points : 8 590
Essaie avec ça :

Code :
sed 's/^.*\.\([a-z]*\)\.\([a-z]*\) \(.*\)$/\1 \2 \3/' monfichier
Bien entendu, faut faire des modifs si tu as des chiffres ou des majuscules à prendre en compte mais tu devrais y arriver.
__________________

Du détail, du détail, du détail !!!
Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
_Mac_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/04/2007, 15h41   #3
Membre à l'essai
 
Inscription : avril 2007
Messages : 24
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 24
Points : 21
Points : 21
La version avec awk

Code :
echo aa.bb.cc.dd.inf on off serv1 | awk -F. '{print $4 " " $5}'
je te laisse deviner les autres
liodev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/04/2007, 15h42   #4
Invité de passage
 
Inscription : avril 2007
Messages : 11
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 11
Points : 3
Points : 3
ça n'a pas l'air de fonctionner, il me concatene les 2 derniers champs
killapig est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/04/2007, 15h43   #5
Invité de passage
 
Inscription : avril 2007
Messages : 11
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 11
Points : 3
Points : 3
Citation:
Envoyé par liodev
La version avec awk

Code :
echo aa.bb.cc.dd.inf on off serv1 | awk -F. '{print $4 " " $5}'
je te laisse deviner les autres
je dois faire le traitement d'une traite, j'ai plus de 1000 lignes...de plus deja fais, mais merci
killapig est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/04/2007, 16h00   #6
Invité de passage
 
Inscription : avril 2007
Messages : 11
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 11
Points : 3
Points : 3
ok ça à l'air bon, merci de votre aide !!
killapig est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/04/2007, 21h58   #7
Membre expérimenté
 
Avatar de BlaireauOne
 
Inscription : mars 2007
Messages : 469
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : mars 2007
Messages : 469
Points : 576
Points : 576
Citation:
Envoyé par killapig
je dois faire le traitement d'une traite, j'ai plus de 1000 lignes...de plus deja fais, mais merci

Extraction l'avant dernier et dernier champ d'un enreg :

awk -F. '{ print $(NF-1), $NF}' fichier.txt


NF = Number Fields of the record.
BlaireauOne est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/04/2007, 09h36   #8
Invité de passage
 
Inscription : avril 2007
Messages : 11
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 11
Points : 3
Points : 3
Citation:
Envoyé par BlaireauOne
Extraction l'avant dernier et dernier champ d'un enreg :

awk -F. '{ print $(NF-1), $NF}' fichier.txt


NF = Number Fields of the record.
alors la je dis chapeau bas
je pensai la manip impossible sans sed mais je me suis trompé...
et dire que la solution etait si simple...
Merci a tous pour votre precieuse aide, cela fait plaisir de trouver des gens qui aident comme ça
killapig est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/04/2007, 10h40   #9
Membre à l'essai
 
Inscription : avril 2007
Messages : 24
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 24
Points : 21
Points : 21
lol pas de quoi :p
liodev est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h12.


 
 
 
 
Partenaires

Hébergement Web