Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 27/06/2006, à 17:11

benjou

[résolu]Bug dans awk???

Bon je crois plutot que le bug estt dans l'utilisateur neanmoins, je ne comprends pas.

J'ai un fichier texte (/tmp/coord):

46.1859030 6.1402170
46.1860000 6.1426879
46.1848295 6.1466915
46.1849220 6.1492917

si je

benoit@laptop-benoit:~/Tracks$ awk '{print $1}' /tmp/coord
46.1859030
46.1860000
46.1848295
46.1849220

si je

 benoit@laptop-benoit:~/Tracks$ awk '{print $2}' /tmp/coord
6.1402170
6.1426879
6.1466915
6.1492917

si je

benoit@laptop-benoit:~/Tracks$ awk '{print $1 $2}' /tmp/coord
46.18590306.1402170
46.18600006.1426879
46.18482956.1466915
46.18492206.1492917

ou si je

benoit@laptop-benoit:~/Tracks$ awk '{print $1, $2}' /tmp/coord
46.1859030 6.1402170
46.1860000 6.1426879
46.1848295 6.1466915
46.1849220 6.1492917

Jusqu'ici c' est parfait j'ai bien le champ $1 ou $2 ou les deux

Par contre si je

benoit@laptop-benoit:~/Tracks$ awk '{print $2 $1}' /tmp/coord
46.1859030
46.1860000
46.1848295
46.1849220

neutral

ou si je

benoit@laptop-benoit:~/Tracks$ awk '{print $2, $1}' /tmp/coord
 46.1859030
 46.1860000
 46.1848295
 46.1849220

neutral:|:|

Pourquoi je peux pas avoir le champ $2 avant le champ $1 ????

Dernière modification par benjou (Le 27/06/2006, à 19:25)


écrasons l'infâme

Hors ligne

#2 Le 27/06/2006, à 17:51

cep

Re : [résolu]Bug dans awk???

Essaye  awk '{ print $2 "         " $1 }'

Hors ligne

#3 Le 27/06/2006, à 17:59

benjou

Re : [résolu]Bug dans awk???

Ben ca marche smile

benoit@laptop-benoit:~/Tracks$ awk '{ print $2 "         " $1 }' /tmp/coord
6.1402170         46.1859030
6.1426879         46.1860000
6.1466915         46.1848295
6.1492917         46.1849220

Si tu as des explications, je suis preneur...


écrasons l'infâme

Hors ligne

#4 Le 27/06/2006, à 18:00

Cathou

Re : [résolu]Bug dans awk???

Avant de mettre en cause awk, es-tu certain que ton fichier de départ ne change pas entre-temps?
Si c'est dans le cadre d'un script, ça peut arriver..

Tout se passe comme si le deuxième champ a disparu de chaque ligne.

#5 Le 27/06/2006, à 18:09

benjou

Re : [résolu]Bug dans awk???

ca marche plus sad

benoit@laptop-benoit:~/Tracks$ cat /tmp/coord
46.1859030 6.1402170
46.1860000 6.1426879
46.1848295 6.1466915
46.1849220 6.1492917
benoit@laptop-benoit:~/Tracks$ awk '{ print $2 "         " $1 }' /tmp/coord
         46.1859030
         46.1860000
         46.1848295
6.1492917         46.1849220

écrasons l'infâme

Hors ligne

#6 Le 27/06/2006, à 18:12

benjou

Re : [résolu]Bug dans awk???

@Cathou
Je te mets le 'cat' avant pour te montrer que le deuxieme champs existe toujours

POur mon dernier exemple c' est encore plus space: Seule la derniere ligne marche... neutral


écrasons l'infâme

Hors ligne

#7 Le 27/06/2006, à 18:17

Cathou

Re : [résolu]Bug dans awk???

Dans ce cas, il est possible que ton fichier soit pas du texte pur.
Et que des morceaux binaires, que tu vois pas avec cat, fasse partir awk en vrac.

Regarde ton fichier avec un viewer hexa..

#8 Le 27/06/2006, à 18:19

benjou

Re : [résolu]Bug dans awk???

Bon, si je copie-colle ekechose dans /tmp/coord en utilisant gedit, ca marche par contre si mon fichier /tmp/coord est cree par mon script

cat "$i"|grep -v "#"|sed s/,/\ /g >/tmp/coord

alors ca ne marche plus...

Je suspecte un probleme de fin de ligne non reconnu. Si quelqu'un s'y connait...


écrasons l'infâme

Hors ligne

#9 Le 27/06/2006, à 18:28

Cathou

Re : [résolu]Bug dans awk???

Et les guillemets dans l'expression sed ?! yikes

#10 Le 27/06/2006, à 18:31

cep

Re : [résolu]Bug dans awk???

Je n'ai peut-être pas bien compris ce que tu veux réaliser.
Ajouter une seule fois le résultat de awk dans une liste ?

:~$ nano liste
:~$ cat liste
10 20 30 40 50 60 70 80
:~$ cat liste | awk '{ print $4 "         " $2 }' >>liste
:~$ cat liste
10 20 30 40 50 60 70 80
40         20

Hors ligne

#11 Le 27/06/2006, à 18:39

benjou

Re : [résolu]Bug dans awk???

Ce que je veux faire:
J'ai une liste .csv de coordonnees LAT,LON
elle commence par 4-5 lignes commentées (avec un #) que je veux enlever (d'où le grep -v "#")

Ce qu je veux produire est une list .csv de coordonnées LON, LAT d'où le print $2,$1 afin d'inverser LAT et LON.

Grosso modo j'ai un fichier

#voila une ligne commentée
#et une autre
45.9898,5.4576
45.9897,5.4577
.
.
.
45.9896,5.4578

que je veux transformer en

5.4576,45.9898
5.4577,45.9897
.
.
.
5.4578,45.9896

C'est aussi bête que cela.. hmm


écrasons l'infâme

Hors ligne

#12 Le 27/06/2006, à 18:52

Cathou

Re : [résolu]Bug dans awk???

cat LATLON | grep -v '#' | sed -e 's/,/\ /' | awk '{print $2 "," $1}' > LONLAT

devrait marcher en principe..

#13 Le 27/06/2006, à 19:02

cep

Re : [résolu]Bug dans awk???

Ben oui, suffit de changer le nom de sortie.

Hors ligne

#14 Le 27/06/2006, à 19:04

Cathou

Re : [résolu]Bug dans awk???

Quoi qu'il en soit, ça sent le mec qui fait mumuse avec google earth, ça lol

Dernière modification par Cathou (Le 27/06/2006, à 19:05)

#15 Le 27/06/2006, à 19:05

benjou

Re : [résolu]Bug dans awk???

Ton script marche sur mon exemple

benoit@laptop-benoit:~/Tracks$ cat /tmp/coord 
#voila une ligne commentée
#et une autre
45.9898,5.4576
45.9897,5.4577
45.9896,5.4578
benoit@laptop-benoit:~/Tracks$ cat /tmp/coord | grep -v '#' | sed -e 's/,/\ /' | awk '{print $2 "," $1}'
5.4576,45.9898
5.4577,45.9897
5.4578,45.9896
benoit@laptop-benoit:~/Tracks$

Malheureusement, il ne marche pas sur mon vrai fichier

benoit@laptop-benoit:~/Tracks$ cat $i
# Latitude, Longitude and UTM coordinates are in WGS84 datum
#
# Each record includes the following fields
#
#    Latitude in decimal degrees (negative is south)
#    Longitude in decimal degrees (negative is west)
46.1859030,6.1402170
46.1860000,6.1426879
46.1848295,6.1466915
46.1849220,6.1492917
46.1817671,6.1573709
.
.
46.0261545,6.4631419
46.0257997,6.4617573
benoit@laptop-benoit:~/Tracks$ cat $i | grep -v '#' | sed -e 's/,/\ /' | awk '{print $2 "," $1}'
 ,46.1859030
,46.1860000
,46.1848295
,46.1849220

Mon fichier en question vient d'une appli marchant sous wine, cela pourrait il etre le problème??

Merci en tout cas pour l'aide.

Dernière modification par benjou (Le 27/06/2006, à 19:08)


écrasons l'infâme

Hors ligne

#16 Le 27/06/2006, à 19:08

benjou

Re : [résolu]Bug dans awk???

Quoi qu'il en soit, ça sent le mec qui fait mumuse avec google earth, ça

Clair!

C'est exactement ca, je cherche a faire un script pour regarder ses données GPS avec googleearth mais ces nouilles mettent la lon avant la lat ce qui est completement... roll


écrasons l'infâme

Hors ligne

#17 Le 27/06/2006, à 19:15

Cathou

Re : [résolu]Bug dans awk???

..d'une appli marchant sous wine..

aaaaaarrrrghhhh

Oui il est bien possible que ton problème vienne de là smile
Essaye ça:

cat LONLAT | sed 's/\x0D$//' | grep -v '#' | sed -e 's/,/\ /' | awk '{print $2 "," $1}' > LATLON

#18 Le 27/06/2006, à 19:20

benjou

Re : [résolu]Bug dans awk???

AYÉÉÉ

zé trouvé. j'utilise sed opur changer tous les "carriage returns" (\r) par des "new lines" (\l)
Ensuite j'utilise awk en lui disant que les virgule séparent les "fields" (-F,) et ça roule

benoit@laptop-benoit:~/Tracks$ cat $i | grep -v '#' | sed -e 's/\r/\l/' | awk -F, '{print $2 "," $1}' 6.1402170,46.1859030
6.1426879,46.1860000
6.1466915,46.1848295

cool

Merci de votre aide!


écrasons l'infâme

Hors ligne

#19 Le 27/06/2006, à 19:22

cep

Re : [résolu]Bug dans awk???

Tu peux d'ailleurs tout faire avec awk

:~$ echo "#commentaire 1
> # commentaire 2 essai de liste
> 10 20 30 40 50
> 60 70 80 90 100
> 11 22 33 44 55
> 66 77 88 99 111" > liste
:~$ cat liste | awk '! (/^ *#/ || /^$/) { print $0 }' | awk '{ print $4 ", " $2 }' >liste2
:~$ cat liste2
40, 20
90, 70
44, 22
99, 77

Penser à enlever l'espace après la virgule ", " s'il n'est pas nécessaire.

Bonne continuation à vous deux.
cep

Hors ligne

#20 Le 27/06/2006, à 19:25

Cathou

Re : [résolu]Bug dans awk???

Moralité.. awk est hors de cause. Ouf smile

#21 Le 27/06/2006, à 20:02

benjou

Re : [résolu]Bug dans awk???

Moralité.. awk est hors de cause. Ouf

Je n'en ai jamais douté lol


écrasons l'infâme

Hors ligne