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
...
Configuration: Linux
Opera 9.80

2 réponses

  1. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    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
  2. matthieu
     
    yes
    c'est parfait, merci dubcek ...
    i wanna be an awk master too !
    0