Separateur de awk

Résolu
coiaye -  
 coiaye -
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

8 réponses

jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Salut,

Normalement oui ;-))
0
coiaye
 
:)
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
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
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 ;-\
0
coiaye
 
????
je comprend pas pourqoi ça marche pas pour moi :-S
sinon ya t'il un moyen avec sed?
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Je ne comprends pas non plus ;-((

sed n'est pas vraiment fait pour ça...
0
coiaye
 
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
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Sans grande conviction...
 awk 'BEGIN { FS = "chaine" } { print $2 }'
;-\
0
coiaye
 
slt
j'ai déja essayé ça, pareil ça marche pas :-/
0
coiaye
 
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Re-

Là par contre c'est du domaine de "sed" :
echo "aaa:bbb:ccc:ddd" | sed -n 's/\(.*\):.*/\1/p'
;-))
0
coiaye
 
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
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
awk ne peut pas laisser dire ça :-) :
$ echo aaa:bbb:ccc:ddd | awk 'BEGIN {FS=OFS=":"} ; {NF--;print $0}'
aaa:bbb:ccc
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
;-))

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.
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
Il faudrait connaitre quelle platforme,quel awk, essayer peut-être
awk -F"(chaine)" '{print $2}'
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Merci, en espérant qu'il refasse un saut dans le coin ;-))
0
coiaye > jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention  
 
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
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896 > coiaye
 
Pour la plateforme, Windows ou GNU/Linux (ou Unixes) ?

Pour la version "awk --version"
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
hello
ver
uname -a
awk -v
awk --v
Si tu es sur Solaris, uiliser nawk
0
coiaye
 
(SunOS / windows vers unix via SSH)

ça marche avec nawk
c cool
merci
0