#1 Le 18/07/2015, à 08:21
- Compte supprimé
[Résolu]AWK: récuperer champs après toujours même chaîne de caractères
Bonjour,
J'ai un exemple de texte:
toto 20 34
23 toto 34 56
34 56 45 toto 63 56
Et j'aimerais toujours récupérer avec AWK le champs après toto (1er ligne 20, 2ème ligne 34 et 3ème ligne 63 dans mon exemple)
Dernière modification par Compte supprimé (Le 19/07/2015, à 19:55)
#2 Le 18/07/2015, à 08:53
- jplemoine
Re : [Résolu]AWK: récuperer champs après toujours même chaîne de caractères
Je ne suis pas spécialiste. Donc, on doit pouvoir faire (beaucoup ?) mieux.
cat testawk.txt | awk -F "toto" '{print $2}' | awk '{print $1}'
où testawk.txt est le fichier qui contient les données.
NB : reste à faire : vérifier s'il n'y a pas d'espace indésirable après la valeur du champ.
Ce compte ne servira plus : vous pouvez le supprimer si le coeur vous en dit...
Laissé par l'auteur pour historique.
Hors ligne
#3 Le 18/07/2015, à 09:30
- MicP
Re : [Résolu]AWK: récuperer champs après toujours même chaîne de caractères
michel@debG53SW:~/monTest2$ cat fichData
toto 20 34
23 toto 34 56
34 56 45 toto 63 56
michel@debG53SW:~/monTest2$ awk '/toto/ {sub(/^.* *toto/, ""); print $1}' fichData
20
34
63
michel@debG53SW:~/monTest2$
/toto/ => Rechercher les lignes dans lesquelles "toto" existe,
sub(/^.* *toto/, "") => Supprimer dans ces lignes tout ce qui précède et inclus "toto",
print $1 => Retourner le premier champ.
Dernière modification par MicP (Le 18/07/2015, à 10:16)
Hors ligne
#4 Le 18/07/2015, à 09:41
- jplemoine
Re : [Résolu]AWK: récuperer champs après toujours même chaîne de caractères
Je ne suis pas spécialiste.
J'avais raison...
Merci MicP pour une solution meilleure que le mienne...
@Slyfox : la solution de MicP est meilleure que la mienne (ça ne se voit pas sur l'exemple mais sur un gros fichier, elle est beaucoup plus rapide car optimisée). Cette dernière n'avait que le mérite d'exister en attendant mieux...(enfin que tu es quelque chose)
Ce compte ne servira plus : vous pouvez le supprimer si le coeur vous en dit...
Laissé par l'auteur pour historique.
Hors ligne
#5 Le 18/07/2015, à 09:43
- Ferod
Re : [Résolu]AWK: récuperer champs après toujours même chaîne de caractères
Je ne sais pas à quel point awk t'es nécessaire... C'est faisable en tout cas avec sed :
sed -r 's/(.*)(toto )([0-9]*)(.*)/\3/g' fichier.txt
"When I was in the military, they gave me a medal for killing
two men, and a descharge for loving one !" Leonard Matlovich
Hors ligne
#6 Le 18/07/2015, à 10:32
- jplemoine
Re : [Résolu]AWK: récuperer champs après toujours même chaîne de caractères
C'est une autre solution : je ne sais pas comment on choisit entre sed et awk...
Ce compte ne servira plus : vous pouvez le supprimer si le coeur vous en dit...
Laissé par l'auteur pour historique.
Hors ligne
#7 Le 18/07/2015, à 11:40
- credenhill
Re : [Résolu]AWK: récuperer champs après toujours même chaîne de caractères
hello
ou avec grep
$ grep -oP '(?<=toto )[0-9]+' fichier
20
34
63
Hors ligne