Awk moulinette

matthieu -  
 matthieu -
Bonjour,
je reviens ici pour une aide sur awk (encore! mon niveau awk reste desperement bas)
je dois convertir un fichier de trait de cote au format .csv dans un autre format (csv toujours). En fait je dois reecrire la premiere ligne apres "X, Nodes" a la fin du paquet (X donne le nombre d'elements qui suit dans le paquet, mais pour fermer le trait de cote, je dois lui donner la premiere coordonnees pour que la boucle soit bouclee). Je dois aussi incremente de un le nombre d'element en entete du paquet. Ce fichier provient d'une extraction de shp vers .csv, mais je dois encore le modifier. Je sais qu'il y a beaucoup de awk guru ici ! j'espere leur aide ; )

par exemple :

4, Nodes
-1.5684410000,43.4849130000
-1.5684920000,43.4849980000
-1.5685420000,43.4850130000
-1.5685910000,43.4850300000

2, Nodes
-1.5627750000,43.4848800000
-1.5628250000,43.4848800000

8, Nodes
...

doit devenir :

5, 0 #attention le nb d'elements est aussi incremente du coup!
-1.5684410000,43.4849130000
-1.5684920000,43.4849980000
-1.5685420000,43.4850130000
-1.5685910000,43.4850300000
-1.5684410000,43.4849130000

3, 0
-1.5627750000,43.4848800000
-1.5628250000,43.4848800000
-1.5627750000,43.4848800000

8, 0
...

2 réponses

dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
hello
quelque chose comme ça ?
$ cat  a2
4, Nodes
-1.5684410000,43.4849130000
-1.5684920000,43.4849980000
-1.5685420000,43.4850130000
-1.5685910000,43.4850300000
2, Nodes
-1.5627750000,43.4848800000
-1.5628250000,43.4848800000
8, Nodes 
$ 
$ awk -F, '/Nodes/ {if(length(x))print x;print $1+1",0";if(!getline)exit;x=$0;print x;next} ; {print $0}' < a2
5,0
-1.5684410000,43.4849130000
-1.5684920000,43.4849980000
-1.5685420000,43.4850130000
-1.5685910000,43.4850300000
-1.5684410000,43.4849130000
3,0
-1.5627750000,43.4848800000
-1.5628250000,43.4848800000
-1.5627750000,43.4848800000
9,0
$ 
0
matthieu
 
yes
c'est parfait, merci dubcek ...
i wanna be an awk master too !
0