Comment ça ? Tes différents enregistrements sont séparés par quoi alors ? Tu peux montrer un extrait de tes données histoire d'avoir une idée ?
Hors ligne
Le post à 13h37 de Sephi. La classe.
Hors ligne
il est né pour ça ! (ou elle)
je suis pas homo, mais une personne qui sait se servir de son pc comme ça doit bien savoir faire autre chose....... ?
A force de patience et de saindoux, l'éléphant sodomise le pou.
i'am a sepman
Hors ligne
Salut Sephi,
Ca ressemble à ça (exemple sur 4 lignes):
S***** 10153 0 1.86N 12 342.82W 697160.85876490.7 228.9177214611
S***** 10253 0 .87N 12 342.79W 697162.65876460.3 228.7177214623
S***** 103525959.89N 12 342.76W 697164.45876429.9 228.6177214636
S***** 104525958.91N 12 342.76W 697165.75876399.6 228.6177214648
C'est ce qu'on appelle des données de navigation.
Chaque colonne est sensée être alignée, de la façon suivante:
* Les premiers charactères (après le 'S') correspondent à nom (codé, mais que je décode sans aucun problème)
* Les trois premiers chiffres sont le numéro d'un point de référence
* Après, il y a des données de latitude (jusqu'au N) puis de longitude (jusqu'au W) puis les mêmes données translatées en UTM numérique codées en projection
* Et enfin, après le dernier blanc sont des données de bathymétrie (dont je n'ai pas besoin, car elles sont en fait non correctées en valeur de marée).
Comme tu peux le voir, certaines lignes ont des blancs en longitude et latitude, qui correspondent en fait à des zéros. Ce qui m'embête, c'est que j'ai besoin de chacune de ces lignes, afin de ploter le trajet de mon bateau. Je dois donc traiter par programmation les blancs en les remplaçant par des zéros.
Donc j'aimerais savoir si je peux le faire, avec 'awk', afin d'extraire ces lignes, générés en fichier correcté et enfin réinsérer dans un nouveau fichier final. Les deux dernières étapes sont faciles à faire, mais la première me pause un problème: awk fonctionne très bien en colonne, mais apparemment pas en ligne.
Merci d'avance!
PS.: je n'ai bien pas que quatre lignes, mais des millions!
'Ils ne sont grands que parce que nous sommes à genoux.' (Etienne de La Boétie)
'Soyez réaliste, demandez l'impossible' (Ernesto Guevara)
'Bien heureux les langues de p****.'(Jésus - Le Troisième Evangile selon St Emilion, verseZ 8.6)
Smile, you're on CCTV!
Hors ligne
Je comprends pas ce que tu veux dire par "awk fonctionne très bien en colonne, mais apparemment pas en ligne" ? En fait je vois même pas quel est le problème ? awk permet justement de traiter les colonnes de chacun de tes enregistrements.
Juste un truc, je sais pas si c'est "normal" mais j'ai remarqué que sur les lignes 3 et 4 il n'y a pas de séparateur entre la 2ème et la 3ème colonne ? Si c'est ça le problème, t'es pas sorti de l'auberge à mon avis. ^^
Hors ligne
Oui, mais moi, je veux remplacer les espaces manquant par des 0 et je n'ai pas envie de me taper tout à la main.
Sinon, pour les séparateurs en 4ème et 5ème colonnes, ce n'est pas trop grave... GMT (Global Mapping Tool, un logiciel de plot de données comme cela) est sensé dealer avec un petit 'if, then, else'...
Enfin, j'espère!... autrement, je vais franchement rester à l'auberge pour un (graaaaaaand) moment, c'est sur!!! Mais je devrais pouvoir m'en sortir avec les autres données autrement.
Merci beaucoup en tout cas!
Dernière modification par Ced (25.03.2008 18:11:23)
'Ils ne sont grands que parce que nous sommes à genoux.' (Etienne de La Boétie)
'Soyez réaliste, demandez l'impossible' (Ernesto Guevara)
'Bien heureux les langues de p****.'(Jésus - Le Troisième Evangile selon St Emilion, verseZ 8.6)
Smile, you're on CCTV!
Hors ligne
Le problème c'est que si tu as un espace manquant, awk ne pourra plus séparer tes colonnes correctement (il peut pas "deviner" où séparer), à moins que tu puisses lui préciser une largeur de colonne mais ça dépasse mes connaissances de cet outil... désolé !
Hors ligne
Mouaip...
Je crois que je vais devoir écrire un script pour refaire un fichier de données alors. Ils sont jamais fichus de donner des fichiers propres, pffffff... Ca en devient lassant!
Bref, pour ce qui est de la commande awk, je crois que je peux séparer en précisant une largeur, si tout est homogène... Je dois regarder en faisant un man, mais je pense que c'est possible... Je te redirais si je trouve la solution.
Merci beaucoup en tout cas!
'Ils ne sont grands que parce que nous sommes à genoux.' (Etienne de La Boétie)
'Soyez réaliste, demandez l'impossible' (Ernesto Guevara)
'Bien heureux les langues de p****.'(Jésus - Le Troisième Evangile selon St Emilion, verseZ 8.6)
Smile, you're on CCTV!
Hors ligne
Vous êtes conscients que votre discussion est INCOMPREHENSIBLE pour le commun des mortels?
C'est drôle les cons, ça repose, c'est comme le feuillage au milieu des roses...
Hors ligne
merci pancakes
Hors ligne
C'est ptêt' incompréhensible, mais c'est tout aussi chiant que vos discussions sur les cheveux longs.
Hors ligne
Hahahahahahaha
Hors ligne
*fille de joie* je peux que plussoyer aussi la '_'
Hors ligne
Bah nan, pas du tout... Awk, c'est une commande qui fonctionne sous linux et qui permet de prendre des colonnes de caractères et de les placer dans un autre fichier, en les modelant comme tu veux.
Si par exemple ce sont des nombres, tu peux les multiplier, les diviser, leur mettre des exponentiels, etc... Ca, c'est une étape que j'ai fait aujourd'hui par exemple, parce que j'avais une liste de données brutes d'environ 2 000 lignes (c'est pas beaucoup 2000 lignes) remplies de chiffre à traiter (le programme tourne encore, d'ailleurs!) pour faire une modélisation de paléo-températures dans des roches du Carbonifère.
Si ce sont des lettres, alors tu peux les coder de x lettres d'ordre inférieur (si x = 3, D deviendra B par exemple) ou supérieur (J deviendra M). Tu peux aussi leur donner des valeurs numériques, en apparance aléatoires, mais qui peuvent être basés sur des lois en équation.. Ou tu peux translater ton alphabet en alphabet grec, russe ou modeler des alphabets imaginatifs, etc... Ce peut-être très pratique si tu as affaire à un fichier de données confidentiels, et que tu veux transférer en code sans que cela soit lisible par des tiercés (je crois que c'est comme ça qu'on appelle ça).
Et c'est toujours très pratique car la plupart des fichiers de données ne sont jamais créés avec des tableurs (type excel), simplement parce que la plupart des tableurs ne sont pas adaptés aux gros systèmes de calculs car trop limités... Tu ne peux donc pas individualiser des colonnes comme tu veux. Et comme cela, tu peux aussi faire d'énormes calculs de façon indépendante sans bouffer trop de ressources...
Et moi, je ne peux pas changer des couillons d'espaces par des 0, et je vais passer des nuits à devoir le faire à la main.
PS.: surtout quand on a les cheveux courts!...
Dernière modification par Ced (25.03.2008 19:35:06)
'Ils ne sont grands que parce que nous sommes à genoux.' (Etienne de La Boétie)
'Soyez réaliste, demandez l'impossible' (Ernesto Guevara)
'Bien heureux les langues de p****.'(Jésus - Le Troisième Evangile selon St Emilion, verseZ 8.6)
Smile, you're on CCTV!
Hors ligne
man sed ?
sed [2addr]s/regular expression/replacement/flags
ou plus simple si tu veux remplacer tous les espace par des zéros:
tr ' ' '0'
je pense que ça peut faire l'affaire.
"Un ordinateur sans windows, c'est comme un gâteau au chocolat sans moutarde"
Hors ligne
Le problème c'est qu'il y a même pas d'espace... et il faut pas remplacer tous les espaces par des 0 au risque de rentre le fichier intraitable ensuite...
Hors ligne
Je pense que sed peut faire l'affaire, sinon dans awk il y a la fonction sub ou gsub qui doit permettre de faire des remplacements.
"Un ordinateur sans windows, c'est comme un gâteau au chocolat sans moutarde"
Hors ligne
À propos d'espace, existe-t-il un logiciel/astuce qui permettrait de remplacer les espaces par des "_" dans les nom de fichier d'un grand nombre d'élément. (dossier de photos par exemple)
Hors ligne
Sur nux tu peux le faire très facilement avec Bash.
Hors ligne
Effectivement c'est pas mal foutu Bash, j'pense que changer les caractères accentué doit être possible aussi, j'regarderai à l'occas'.
Merci Sephi
Hors ligne