Specifier nombre caractere à lire - awk

Résolu
teab -  
 teab -
Bonjour,


Une nouvelle question m'amène ici, et je vous remercie (encore) par avance!
Voila mon problème. J' ai un fichier qui contient N lignes.
Je dois me placer à la ligne i qui ressemble à ca:

3.03800E+01-7.00611E-01 4.59240E-02 | H

Je dois dans un premier temps lire les trois valeurs qui comme vous pouvez le voir ne sont pas très bien séparées.

Pour lire la première et la troisième ça va. Mais pour lire la deuxième ( -7.00611E-01) ca me pose problème.

Par la suite il faut aussi que je modifie ces valeurs et j'ai le même problème.

Je voudrais donc trouver une méthode permettant de spécifier le nombre de caractère à lire ou à modifier pour chaque valeur. Du 12 au 23 pour la deuxième par exemple.

J'espère que ma question est claire.

Merci
teab

A voir également:

2 réponses

ripat_ Messages postés 60 Date d'inscription   Statut Membre Dernière intervention   6
 
Bonjour,

As-tu regardé la fonction substr() de awk? Si tes champs ont une longueur fixe, elle devrait t'apporter la solution.

Pour le reste du traitement, donne-nous un exemple plus concret d'entrée et de sortie désiré.
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
hello
il y a aussi la variable FIELDWIDTHS de gawk
$ echo "3.03800E+01-7.00611E-01 4.59240E-02 | H"|gawk 'BEGIN{FIELDWIDTHS="11 12 12"};{print $1, $2, $3}'
3.03800E+01 -7.00611E-01  4.59240E-02
$ 
0
teab
 
Merci à vous deux. Je vais conserver la solution de Dubcek pour la lecture.
Pour l'écriture j'essai de trouver en adaptant....
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
pour l'écriture, tu peux utiliser le format %e
$ echo "3.03800E+01-7.00611E-01 4.59240E-02 | H"|gawk 'BEGIN{FIELDWIDTHS="11 12 12"};{printf "%.5E%.5E %.5E\n", $1, $2, $3}'
3.03800E+01-7.00611E-01 4.59240E-02
$
0
teab
 
Quand je disais ecriture, je parler de modification, par exemple remplacer le deuxième champ par :

-0.00000E+00
0
teab
 
je parlais**
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
$2=-0.00000E+00
0