Rechercher : dans
Par :

Analyse fichier texte

Dernière réponse le 8 jui 2008 à 17:54:27 Liiiili, le 7 jui 2008 à 02:34:01 
 Signaler ce message aux modérateurs

Bonjour,
Je cherche à analyser un fichier texte à partir d'un scropt shell.
D'abord est ce que vous connaissez des cours bien faits qui peuvent m'aider?

J'aimerai lire le fichier ligne par ligne, si la fin de la ligne est A ( séparateur espace entre les mots d'une ligne, donc dernier mot sera A), je prends le premier mot de cette ligne , je le stocke ds une variable, et puis je dois lire les 3 lignes qui la suivent directement et refaire la meme chose, ie, prendre la première expression.


Le premier mot de la ligne sera une date, genre 23:20:12.060769, je dois le convertir en millisecondes et le mettre ds une variable .
Je débute en script, svp un coup de main.

Configuration: Linux
Firefox 2.0.0.14

Meilleures réponses pour « analyse fichier texte » dans :
[MS-Dos] Ecrire dans un fichier texte en batch Voir Pour écrire dans un fichier texte, il suffit d'utiliser une redirection ">" : echo texte_à_ecrire > fichier_de_sortie.txt Pour écrire à la fin d'un texte existant (concaténation) : echo "écriture a la fin du fichier ">>...
MySQL - Chargement d'un fichier texte dans une table Voir Pour charger une fichier texte défini comme suit : $ tail /home/user1/test.txt 'nom1',1,9 'nom2',2,3 'nom3',3,54 'nom4',4,2 'nom5',5,9 Dans une table définie comme suit : CREATE TABLE chargertest ( ...
Fichier TXT VoirFormat TXT Un fichier TXT est un fichier texte, c'est-à-dire un simple fichier contenant du texte au format ASCII. Pour ouvrir ou modifier un tel fichier, il suffit d'utiliser le bloc-notes ou un éditeur de texte traditionnel.

1

Solkis, le 7 jui 2008 à 18:01:45

Salut;
pour ce que tu ve faire tu peut essayé en ouvrant le fichier texte avec qqch comme "cat"
tu le redirige vers la commande "grep" qui va chercher dans le texte et t'afficher la ligne
avec ca déja tu as :
**ton fichier texte par exemple: (je le nome "txt")**
23:20:12.060769 B
13:00:02.123456 A
23:20:12.060769 C
***fin fichier texte***

script:
cat /chemin/vers/txt | grep "A"

==resultat ==>
il t'affiche :
13:00:02.123456 A
-----------------------------------------------------------------------------
aprés si tu ve récupéré just la date tu utilise le "cut" sur ce que te renvoi le grep
--> cat /chemin/vers/txt | grep "A" | cut -d" " -f1

ac celui là il te donnera : 13:00:02.123456

je ne suis pas sur de ems attributs pour le cut , regarde la doc ( man cut) et mm pour les autres...
c'est des commandes bash que tu pe executé directe dans le terminal ou dans un script bash

Voila jep que ca va t'aider
(si tu ve faire ptet plus précis renseingne toi sur les expressions régulières)

Répondre à Solkis

2

Liiiili, le 8 jui 2008 à 11:29:28

Bonjour,

J'arrive à collecter les informations que je veux dans un fichier, j'ai 4 lignes qui se répètent dans le fichier, ie

16:20:12.060769 blablabla 40
16:20:12.093199 blablabla 640
16:20:12.209003 blablabla 640
16:20:12.273179 blablabla 216
16:20:27.217444 blablabla 40
16:20:27.235410 blablabla 640
16:20:27.327552 blablabla 640
16:20:27.395484 blablabla 216

et ainsi de suite , les quatre première lignes se répètent.

Ce que je cherche à faire, c'est parcourir le fichier, prendre à chaque fois la date aprés la convertir en ms,faire quatre tableaux , ds T1 je stpcke les dates de 1ère, 5ème,9ème...lignes
dans T2, 2ème,6ème...lignes
dans T3,3ème, 7ème .. lignes
dans T4, 4ème, 8ème... lignes

est ce que quelq'un a une idée svp??

Répondre à Liiiili

3

solkis, le 8 jui 2008 à 16:56:24

Tu pe numéroté els lignes, (je me rapelle plus la commande mais je sais qu'elel existe, elle rajoute un numéro , un espace et le reste de la ligne)

ansi tu refait un "grep" pour selectionné les lignes que tu veu, pui tu utilise "cut" pour séparé la date et la mettre dans ton tableau.

cat /ton/vichier/ac/les/infos | grep "^1 " "^5 " | cut -d" " -f2 >> tableau

=> ca li ton fichier, le flu est redirigé vers "grep" qui sélectionne les lignes commencant par "1 ", "5 ", le résultat est redirigé vers le cut, qui prend comem délimiteur de colone " " (un espace), et il isole la 2eme colone( la date), enfin le tout est écri dans mon fichier "tableau"

Pour tes tableau tu veu qu'ils ressemblent a quoi?

jesp que ca peut t'aidé (nésite po as regardé la doc des commandes avec "lacommande--help" , ou "man lacommande")

Répondre à solkis

4

dubcek, le 8 jui 2008 à 17:12:43

Que faut-il convertir en ms ? 16:20:12.060769 en .060769 ?

Répondre à dubcek

5

 solkis, le 8 jui 2008 à 17:54:27

A oui c'est vrai, la convertion...

si c les 16:20:12.060769 tt entier, perso je réutiliserai cut pour selectionné ce qu'il y a entre les ":" que je mettrai en variable puis je ferai les opé ac les variable pour arrivé a la fin au ms...

exemple

heures=cut -d":" -f1
min=cut -d":" -f2
...

pui aprés
ms=heure*3600*1000+min*60*1000.......

mias javou je voi pas l'utilité de tt convertire en ms *-)

Répondre à solkis
Collection CommentÇaMarche.net