Recuperer colone ds fichier pr mem nbr lignes

val12212 -  
 val12212 -
Bonjour,

Je cherche à recupérer une colone dans un fichier composé de deux colones. Afin de mettre un nombre de ligne definit selon l'intervalle qu'il y a entre chaque valeur.

Explication: Après avoir crée un fichier de 2000 valeur avec deux colonnes, la premiere étant le temps en seconde, la deuxieme une valeur. Chaque temps est un multiple de 1200 sec mais lorsqu'il n'y a pas de valeur la ligne n'est pas crée et donc l'intervalle s'agrandit.

Je cherche donc a récupérer la colonne 1, m'assurer qu'il y a 1200 d'intervalle entre chaque valeur et si NON, alors mettre la valeur du temps ds la colonne 1 (Espacé de 1200) et 0 dans la colonne 2.

J'ai déjà trouvé des pistes sur ce poste (http://www.commentcamarche.net/... mais étant débutant, j'ai du mal a l'utiliser pour mon cas.

Je passerai l'après midi la dessus !

Si vous avez des idées pr éclairer mon chemin, je suis preneur !

Merci a vous.


A voir également:

5 réponses

val12212
 
Cest comme cela que ca aurez du apparaitre :

values_Avant

1262304000 5000
1262305200 5500
1262306400 5200
1262308800 6000

Values_Apres

1262304000 5000
1262305200 5500
1262306400 5200
1262307600 0
1262308800 6000
1
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 430
 
Ça doit être faisable avec "awk" ou "perl", mais là ce n'est pas ma tasse de thé ;-(

Il faudrait que "dubcek" (grand spécialiste en awk) ou lami20j (grand spécialiste en perl) passent par là ;-))
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 430
 
Je reste persuadé qu'avec awk ou perl ça doit être beaucoup plus simple...


En attendant :
$ cat foo.sh
#! /bin/bash

#set -xv

sed -n '1p' plop > fich
COMPT=$(awk 'NR == 1 { print $1 }' plop)

while read line
do
REF=$(awk 'NR == 1 { print $1 }' <<<${line})
COMPT=$((COMPT + 1200))
if [[ ${REF} = ${COMPT} ]]
then
echo "${line}" >> fich
else
echo -e "${COMPT} 0\n${line}" >> fich
fi
done < <(sed '1d' plop)

$ cat plop
1262304000 5000
1262305200 5500
1262306400 5200
1262308800 6000

$ ./foo.sh

$ cat fich
1262304000 5000
1262305200 5500
1262306400 5200
1262307600 0
1262308800 6000

$

;-))
1
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 430
 
Salut,

Les nouvelles restrictions du forum empêchent les anonymes de poster des url cliquables (y compris les url internes ce qui est une aberration complète), et de ce fait ton exemple manque de consistance ;-((

Peux-tu néanmoins poster un exemple concret de ton problème du style
avant => après

Merci ;-)
0
val12212
 
Daccord, désolé ! Je ne le savais pas.

Pour un exemple plus concret et imagé contre ce blabla, voici mon fichier de depart.

values_Avant Values_Apres

1262304000 5000 1262304000 5000
1262305200 5500 1262305200 5500
1262306400 5200 1262306400 5200
1262308800 6000 1262307600 0
1262308800 6000

Il manquait un interval entre la 3eme et 4eme ligne. Dans le fichier apres, l'interval est rajouté et une valeur nul est mise dans la deuxieme colone. J'utilise actualement un autre language pour faire cela mais jaimerai inclure la fonction dans mon script pr eviter les manipulations suplémentaires.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
val12212
 
Yeah zipe 31 ! Merci, tu me fais gagner du temps et aprendre des choses ! Jessaye ca tt de suite !

Thanxs again !!!
0