Posez votre question Signaler

Separateur de awk [Résolu]

coiaye - Dernière réponse le 21 avril 2009 à 10:08
Bonjour,
dans la commande awk est-il possible pour extraire une partie d'une ligne de prendre une chaine de caractère comme séparateur (au lieu d'un caractère -F) (la chaine se repete plusieurs fois dans la ligne)
merci
Lire la suite 

Separateur de awk »

19 réponses
Réponse
+0
moins plus
Salut,

Normalement oui ;-))
coiaye - 20 avril 2009 à 11:22
:)
c'est sympas, aurai tu une idé sur la syntaxe exate car j'ai essayé
echo "ligne:123 chaine 456 chaine 789 chaine 1011" | awk -F"chaine" '{print $2}'
mai ça ne prend en compte que le "c" (le debut de "chaine")
et ça me donne
haine 456
alors que je veux
456

merci
Ajouter un commentaire
Réponse
+0
moins plus
C'est toi qui a un problème car :
$ echo "ligne:123 chaine 456 chaine 789 chaine 1011" | awk -F"chaine" '{print $2}'
 456
chez moi ça marche bien ;-\
coiaye - 20 avril 2009 à 11:38
????
je comprend pas pourqoi ça marche pas pour moi :-S
sinon ya t'il un moyen avec sed?
Ajouter un commentaire
Réponse
+0
moins plus
Je ne comprends pas non plus ;-((

sed n'est pas vraiment fait pour ça...
coiaye - 20 avril 2009 à 11:54
merci kan meme,
je v essayer de trouver ce qui cloch
sinon si tu as une proposition d'une autre solution je sui preneur :)
merci
Ajouter un commentaire
Réponse
+0
moins plus
Sans grande conviction...
 awk 'BEGIN { FS = "chaine" } { print $2 }'
;-\
coiaye - 20 avril 2009 à 12:02
slt
j'ai déja essayé ça, pareil ça marche pas :-/
coiaye - 20 avril 2009 à 16:31
slt

j'ai encor une question qui pourai m'aider
comment je pourai extraire d'une chaine tous les champs séparés par un caractère (":" par exemple) sauf le dernier
en gro j'ai une chaine "aaa:bbb:ccc:ddd" et je veux extraire "aaa:bbb:ccc" sachant que le nombre de ":" n'est pas le meme a chaque foi
je sai comment faire le contraire, c a dire extraire just le dernier champ (awk -F":" '{print $NF}') mais g pas reussi a faire ce que je veux


merci
Ajouter un commentaire
Réponse
+0
moins plus
Re-

Là par contre c'est du domaine de "sed" :
echo "aaa:bbb:ccc:ddd" | sed -n 's/\(.*\):.*/\1/p'
;-))
coiaye - 20 avril 2009 à 16:58
ca marche a merveill
jai regler mon probleme, mais je c tjr pas pourquoi awk -F"chaine" marche pa
en tt cas merci bcp bcp
Ajouter un commentaire
Réponse
+0
moins plus
awk ne peut pas laisser dire ça :-) :
$ echo aaa:bbb:ccc:ddd | awk 'BEGIN {FS=OFS=":"} ; {NF--;print $0}'
aaa:bbb:ccc
jipicy - 20 avril 2009 à 18:24
;-))

Ben comme t'avais pas pointé ton nez de la journée fallait bien trouver un truc de remplacement, non ?

Au fait t'as une idée pour son histoire de séparateur (chaine) du début ?

Bonne soirée.
Ajouter un commentaire
Réponse
+0
moins plus
Il faudrait connaitre quelle platforme,quel awk, essayer peut-être
awk -F"(chaine)" '{print $2}'
jipicy - 20 avril 2009 à 20:16
Merci, en espérant qu'il refasse un saut dans le coin ;-))
coiaye - 21 avril 2009 à 09:24
je suis là :))

je vien d'essayer awk -F"(chaine)" '{print $2}' mais ça marche pas
comment je doi faire pour connaitre quelle platforme et quel awk (curieu seulement, mon probleme est resolu)

merci
jipicy - 21 avril 2009 à 09:27
Pour la plateforme, Windows ou GNU/Linux (ou Unixes) ?

Pour la version "awk --version"
Ajouter un commentaire
Réponse
+0
moins plus
hello
ver
uname -a
awk -v
awk --v
Si tu es sur Solaris, uiliser nawk
coiaye - 21 avril 2009 à 10:08
(SunOS / windows vers unix via SSH)

ça marche avec nawk
c cool
merci
Ajouter un commentaire
Ce document intitulé « separateur de awk » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
5 extensions si vous voulez revenir à l'ancien Facebook