Script shell .

Fermé
AK - 1 août 2012 à 12:30
tuxboy Messages postés 994 Date d'inscription lundi 23 juillet 2012 Statut Membre Dernière intervention 28 mai 2019 - 2 août 2012 à 09:00
Bonjour,
je veux savoir une commande qui me calcule la différence entre deux nombre dans un fichier.
pour plus de détails c'est mon fichier texte :

pict_type=I
pkt_pts=70435.549178 
--
pict_type=I
pkt_pts=70436.909178 
--
pict_type=I
pkt_pts=70438.189178 
--
pict_type=I
pkt_pts=70439.669178 
--
pict_type=I
pkt_pts=70440.029178 
--
pict_type=I
pkt_pts=70441.469178 
--
pict_type=I
pkt_pts=70442.549178 
--
pict_type=I
pkt_pts=70443.869178 
--
pict_type=I
pkt_pts=70445.029178 
--
pict_type=I
pkt_pts=70446.629178 
--
pict_type=I
pkt_pts=70447.789178 
--
pict_type=I
pkt_pts=70449.029178 
--
pict_type=I
pkt_pts=70450.229178 
--
pict_type=I
pkt_pts=70451.549178 
--
pict_type=I
pkt_pts=70452.989178 
--
pict_type=I
pkt_pts=70454.429178 

je veux calculer la différence entre chaque deux pkt_pts successifs

merci pour vos réponses.

A voir également:

3 réponses

dubcek Messages postés 18725 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 28 mai 2024 5 615
1 août 2012 à 16:30
hello
à vérifier
$ awk -F= '$1 !~ /^pkt/ {next} {n++; p[a++]=$2; printf "%s\t%.3f\n", $0, n==1 ? 0 : $2-p[a-2]}'  fichier
pkt_pts=70435.549178	0.000
pkt_pts=70436.909178	1.360
pkt_pts=70438.189178	1.280
pkt_pts=70439.669178	1.480
pkt_pts=70440.029178	0.360
pkt_pts=70441.469178	1.440
pkt_pts=70442.549178	1.080
pkt_pts=70443.869178	1.320
pkt_pts=70445.029178	1.160
pkt_pts=70446.629178	1.600
pkt_pts=70447.789178	1.160
pkt_pts=70449.029178	1.240
pkt_pts=70450.229178	1.200
pkt_pts=70451.549178	1.320
pkt_pts=70452.989178	1.440
pkt_pts=70454.429178	1.440
$ 
2
dubcek Messages postés 18725 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 28 mai 2024 5 615
2 août 2012 à 08:23
plus simple
awk -F= '/^pkt/ {n++; p[a++]=$2; printf "%s\t%.3f\n", $0, n==1 ? 0 : $2-p[a-2]}'  fichier
0
tuxboy Messages postés 994 Date d'inscription lundi 23 juillet 2012 Statut Membre Dernière intervention 28 mai 2019 189
2 août 2012 à 09:00
avec p[a-2], je trouvais ta première formule exceptionnelle, mais là, elle devient carrément excellente.
0
Utilisateur anonyme
1 août 2012 à 13:24
salut,

propose-nous un algorithme, et au moins un début de code

nous serons content de d'aider alors; pas de faire ton boulot !
0
tuxboy Messages postés 994 Date d'inscription lundi 23 juillet 2012 Statut Membre Dernière intervention 28 mai 2019 189
1 août 2012 à 14:04
Tu peux partir par exemple là dessus :
#! /bin/bash
for line in $(cat file.txt);
do
T=$(echo "$line" | sed s/[^0-9.]*//g)
echo $T;
done
-2
Utilisateur anonyme
1 août 2012 à 14:56
- une boucle for sur une substitution de commande va itérer sur chaque mot retourné.
- uuoc !
- passer par une variable pour exécuter une commande pour ensuite afficher la variable est inutile.

un fichier se lit en utilisant une boucle while et en redirigeant le contenu du fichier vers celle-ci.

avant de proposer une solution, teste-la !
0