Au secours ! awk sed cours !
Résolu
pmx
Messages postés
138
Date d'inscription
Statut
Membre
Dernière intervention
-
pmx Messages postés 138 Date d'inscription Statut Membre Dernière intervention -
pmx Messages postés 138 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Pour exploiter un log d'imprimante xerox docutech
j'ai un fichier de cette forme :
-------------------------------------
a=1;b=2;d=bla bla;e=5
a=xxx;b=2a;c=c;d=4;e=5
-------------------------------------
chaque colonne est séparée par un ; et contient une expression de la forme a=xxx
remarquez que la 3eme colonne concene d pour la 1ere ligne, et c pour la 2eme
J'ai besoin d'extraire seulement quelques colonnes en les repérant par ce qui est à gauche du signe =
sed "s/.*\(b=.*;\).*/\1/" me ramène b= en début de ligne, mais le reste de la ligne avec :-(
J'aimerai obtenir ça :
b=2
b=2a;c=c
si ce n'est pas clair, n'hésitez pas à le dire
Merci pour vos suggestions !
Pour exploiter un log d'imprimante xerox docutech
j'ai un fichier de cette forme :
-------------------------------------
a=1;b=2;d=bla bla;e=5
a=xxx;b=2a;c=c;d=4;e=5
-------------------------------------
chaque colonne est séparée par un ; et contient une expression de la forme a=xxx
remarquez que la 3eme colonne concene d pour la 1ere ligne, et c pour la 2eme
J'ai besoin d'extraire seulement quelques colonnes en les repérant par ce qui est à gauche du signe =
sed "s/.*\(b=.*;\).*/\1/" me ramène b= en début de ligne, mais le reste de la ligne avec :-(
J'aimerai obtenir ça :
b=2
b=2a;c=c
si ce n'est pas clair, n'hésitez pas à le dire
Merci pour vos suggestions !
A voir également:
- Au secours ! awk sed cours !
- Panne tnt en cours aujourd'hui - Guide
- En cours d'acheminement - Forum Consommation & Internet
- En cours de livraison - Forum Consommation & Internet
- La ressource demandée est en cours d'utilisation ✓ - Forum Caméra
- Cours de solfège gratuit à télécharger - Télécharger - Création musicale
5 réponses
jp@MDK:~/tmpfs ssh$ cat pmx a=1;b=2;d=bla bla;e=5 a=xxx;b=2a;c=c;d=4;e=5 jp@MDK:~/tmpfs ssh$ var=a; sed -n '/'"$var"'=/ s/.*\('"$var"'=[^;]*\).*/\1/p' pmx a=1 a=xxx jp@MDK:~/tmpfs ssh$ var=b; sed -n '/'"$var"'=/ s/.*\('"$var"'=[^;]*\).*/\1/p' pmx b=2 b=2a jp@MDK:~/tmpfs ssh$ var=c; sed -n '/'"$var"'=/ s/.*\('"$var"'=[^;]*\).*/\1/p' pmx c=c jp@MDK:~/tmpfs ssh$ var=e; sed -n '/'"$var"'=/ s/.*\('"$var"'=[^;]*\).*/\1/p' pmx e=5 e=5 jp@MDK:~/tmpfs ssh$;-))
Merci pour ta réponse, mais je ne peux pas compter sur la présence de d=, qui n'est pas forcemment toujours là.
Il faut vraiment que je me base sur ce qui est à gauche du signe =, sans tenir compte de la position du champ par rapport aux autres.
A+
pmx
Il faut vraiment que je me base sur ce qui est à gauche du signe =, sans tenir compte de la position du champ par rapport aux autres.
A+
pmx
Ok, mais alors, ça :J'aimerai obtenir ça :
b=2
b=2a;c=c
c'est pas possible ;-((
Pour le 1er oui, mais pas pour le second !
Sinon :
b=2
b=2a;c=c
c'est pas possible ;-((
Pour le 1er oui, mais pas pour le second !
Sinon :
sed 's/.*\(b=[^;d]*\).*/\1/';-))
Merci encore, mais je vois "d" dans l'expression et ça ne va pas.
Exprimé autrement :
Quelques soient les autres champs qui les entoure, je souhaite extraire certaines "colonnes' de mon fichier log en identifiant les-dites colonnes par leur "type" a= ou b= ou x=, mais pas par leur position ni par leurs voisins.
Les colonnes sont séparées par des ;
C'est comme si je "sourçais" chaque ligne pour avoir des variables d'environnement que je pourrais ensuite exploiter.
Mais c'est une solution gourmande en ressource et je pense que sed ou awk peuvent le faire.
Merci pour ton intérêt à mon problème :-)
pmx
Exprimé autrement :
Quelques soient les autres champs qui les entoure, je souhaite extraire certaines "colonnes' de mon fichier log en identifiant les-dites colonnes par leur "type" a= ou b= ou x=, mais pas par leur position ni par leurs voisins.
Les colonnes sont séparées par des ;
C'est comme si je "sourçais" chaque ligne pour avoir des variables d'environnement que je pourrais ensuite exploiter.
Mais c'est une solution gourmande en ressource et je pense que sed ou awk peuvent le faire.
Merci pour ton intérêt à mon problème :-)
pmx
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question