Fonction split dans un awk

Résolu/Fermé
Utilisateur anonyme - 30 août 2010 à 17:24
dubcek Messages postés 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 - 31 août 2010 à 13:31
Bonjour,

Je suis déjà venu vous embeter mais je remet ca.
Je voudrais un tableau de champs et je me suis inspiré de la premiere réponse pour pondre ça :

grep "toto" monfichier.doc | awk -F";" '{n=split($8,tab,":")}'

La fonction semble passer mais ... je ne sais pas comment utiliser mon tableau pour la suite des operations
par exemple, si je fais
echo $tab[1]
je n'obtiens pas le champs que j'attends.

Petite remarque : monfichier ne contietnt qu'une seile ligne toto séparée en 10 "zones" par des ";"
Seul la 8eme "zone" est constituée d'un nombre indéterminé de champs séparés par un ":"

Comment faire pour obtenir cette liste de champs ?

A voir également:

3 réponses

dubcek Messages postés 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 5 621
31 août 2010 à 07:50
hello
le tableau dans awk n'est pas visible du shell. on crée un tableau dans le shell (bash)
$ cat a1
a;b;c;d;e;f;g;1:2:3:4:5:6:7:8;i;j
$ 
$ tab=($(awk -F";" '{n=split($8,t, ":") ; for(i=1;i<=n;i++)print t[i]}' a1))
$ 
$ echo ${tab[0]}
1
$ echo ${tab[5]}
6
$
3
Utilisateur anonyme
31 août 2010 à 10:06
Ah .. la syntaxe est particulière ...
J'ai une erreur de parenthese inatendue (je suis en KornShell) mais je vais essayer de me débrouiller avec ça.
0
dubcek Messages postés 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 5 621
Modifié par dubcek le 31/08/2010 à 10:20
où est l'erreur ? ksh connait les tableaux : var=(list)
essayer
$ x="$(awk -F";" '{n=split($8,t, ":") ; for(i=1;i<=n;i++)print t[i]}' a1)" 
$ tab=($x) 
$
0