Awk, Interpolation

Résolu/Fermé
yann747 Messages postés 127 Date d'inscription mardi 25 octobre 2011 Statut Membre Dernière intervention 13 octobre 2021 - Modifié par yann747 le 24/09/2014 à 16:06
yann747 Messages postés 127 Date d'inscription mardi 25 octobre 2011 Statut Membre Dernière intervention 13 octobre 2021 - 25 sept. 2014 à 12:00
Bonjour,

Je dispose de fichiers texte sur lesquels je souhaiterais réaliser des opérations d'interpolation.
fichier "debut.txt" se présente comme ceci :

1
6
4
2
etc ...

le fichier "fin.txt"

10
9
16
3
etc ...

tableau représentant l'interpolation :

1 4 7 10
6 7 8 9
4 8 12 16
2 2.33 2.66 3

Le but serait donc d'obtenir 2 nouveaux fichiers "interpolation1.txt" et "interpolation2.txt"
contenant respectivement la 2ème et la 3ème colone du tableau ci-dessus.

interpolation1.txt :

4
7
8
2.33
etc ...

interpolation2.txt :

7
8
12
2.66
etc ...

J'ai fais quelques essais avec awk, sans succès jusqu'à présent,
merci d'avance pour vos reponses.

2 réponses

dubcek Messages postés 18752 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 3 octobre 2024 5 619
Modifié par dubcek le 25/09/2014 à 11:30
$ awk 'BEGIN {OFMT="%.2f"} NR==FNR {t[FNR]=$1; next} {a=t[FNR]; i=($1-a)/3; print v=a+i > "interpolation1"; print v+i > "interpolation2"}'  debut fin
$ more inter*
::::::::::::::
interpolation1
::::::::::::::
4
7
8
2.33
::::::::::::::
interpolation2
::::::::::::::
7
8
12
2.67
$
2
yann747 Messages postés 127 Date d'inscription mardi 25 octobre 2011 Statut Membre Dernière intervention 13 octobre 2021 2
25 sept. 2014 à 12:00
Impeccable, ça marche à merveille ! Merci pour le coup de main ;-)
0
dubcek Messages postés 18752 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 3 octobre 2024 5 619
25 sept. 2014 à 08:13
hello
le tableau est-il créé à partir des fichiers debut.txt et fin.txt, si oui comment ?
ou faut-il juste extraire les colonnes 2 et 3 du tableau ?
0
yann747 Messages postés 127 Date d'inscription mardi 25 octobre 2011 Statut Membre Dernière intervention 13 octobre 2021 2
25 sept. 2014 à 10:15
Bonjour,
désolé pour le manque clarté dans ma demande.

Les colonnes 2 et 3 doivent être créées (virtuellement ?) à partir debut.txt et fin.txt
Si on prend par exemple la première ligne de debut.txt et fin.txt
respectivement 1 et 10, pour ajouter deux nombres entre 1 et 10,
qui soient équidistants je fais
|10 -1| = 9
9/3 = 3
on a 3 d'écart entre chaque nombre.
Au final ça donne 1 -> 4 -> 7 -> 10
ainsi de suite pour chaque ligne

le tableau d'exemple n'a pas forcement besoin d'être créé "physiquement",
le but est de récupérer les colonnes 2 et 3 dans deux fichiers distincts.
0