IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

Probleme traitement flux de donné


Sujet :

Linux

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Avatar de l4r3nZu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2010
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2010
    Messages : 154
    Par défaut Probleme traitement flux de donné
    Bonjour,

    Je suis débutant en programmation unix et je n'arrive pas a trouver d'exemple de programme ressemblant et ce que je voudrais realiser :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    fichier1 : /bin/rep1
    fichier2 : /bin/rep2
    pour chaque ligne du fichier1
     {
    si (fichier1.position 1 == 'O')
    	{
    		si (fichier1.position 5:9 == 'ALLER')
    		{
    			si (fichier1.position 10:13 == 'SDD')
    			{
    				ecrire 'SDDA' fichier2.position 10:20 
    			}
    		}
    	}
    }
    si vous pourriez m'orienter vers de la document, ca fai pas mal de temps que je cherche et meme sur devellopez je n'ai pas trouvé de documentation assez consistante pour realiser cela.

    merci d'avance,
    Cordialement

  2. #2
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Par défaut
    Bonjour,

    Je ne comprend pas ce que tu indiques par la :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fichier1.position 10:13 == 'SDD'
    Est-ce que cela est cense representer les caracteres 10 a 13 du fichier 1, sur la premiere ligne ?
    Si c'est bien le cas, ce test sera toujours faux, puisque 4 caracteres ne peuvent etre equivalents a une chaine de 3 caracteres.

    Pour information, je pense que cut est la fonction que tu cherches. Regarde le man, et pose des questions si tu ne comprends pas.
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

  3. #3
    Membre expérimenté
    Avatar de l4r3nZu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2010
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2010
    Messages : 154
    Par défaut
    Oui en effet c'etait un exemple et jai fai une ptite erreur mais dans la philosophie c'est :

    je regarde la chaine position X à X de mon fichier ligne par ligne et si celle ci a tel ou tel valeur j'écri dans un autre fichier tel ou tel valeur

    je viens de me documenter sur la fonction apparement celle ci permet de supprimer une partie des lignes d'un ou de plusieurs fichiers, ou de l'entrée standard.

    Cela ne convient pas dans mon cas je veu lire des chaine de caracteres dans un fichier ligne par ligne et si celles ci sont egals a une valeur jécri une valeur dans un autre fichier.
    En gros je recupere des Compte rendues d'opération je les traduits pour apres les charger en base : je m'explique

    Mon compte rendu a une struture fixe , par exemple position 1:3 j'aurai toujours une meme information qui pourras avoir plusieurs valeurs

    Ex : postion 1:3 j'aurai soit 'SDD' soit 'SCT' et en position 10:10 j'aurai 'E' ou 'R'

    le but de lire ces 2 données et en fonction de leurs valeurs j'écri tel ou tel donné dans mon 2em fichier :

    Ex :
    Si pos 1:3 du fichier 1 = 'SDD' et pos 10:10 = 'U'
    J'écris 'MESS1' en position 40:44 dans mon 2em fichier

    Je suis étudiant en stage dans le secteur banquaire en gros tu as des comptes rendues avec une struture (tel position tel info) et tu doi l'interpréter pour generer un autre fichier.

    Franchement j'ai toujours été habitué auc language au niveau C++ , JAVA et la passer a du shell je trouve que c'est vraiment galere, la synthaxe et pas du tt intuitif , pas beaucoup d'information sur internet , c'est vraiment vraiment dur d'apprendre par toi meme ce langage :s

    J'espere avoir été assez clair
    Sinon merci pour ton aide
    Cordialement

  4. #4
    Membre expérimenté Avatar de fransoo
    Inscrit en
    Novembre 2009
    Messages
    209
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 209
    Par défaut
    Il serait bon d'avoir des échantillons des données source et de la sortie souhaitée.
    Pour le test des conditions, voilà une version bash
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #!/bin/bash
    fichier1=/bin/rep1
    fichier2=/bin/rep2
    while read L # pour chaque ligne du fichier1
    do
        if [ ${L:0:1} = "O" ] && [ ${L:4:5} = "ALLER" ] && [ ${L:9:3} = "SDD" ]
        # if [[ $L =~ O...ALLER.SDD ]] # si la version de bash est récente (regex)
        then 
               # ecrire 'SDDA' fichier2.position 10:20 
               # C'est là qu'est le problème : position 10:20 ? insérer ? ajouter ?
        fi
    done < fichier 1
    Tu pourrais être surpris par la puissance et parfois la simplicité de bash...

  5. #5
    Membre expérimenté
    Avatar de l4r3nZu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2010
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2010
    Messages : 154
    Par défaut
    Ecoute laisse moi une heure je le fai en java comme ca tu as un exemple.

    Merci pour ton aide

  6. #6
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 485
    Par défaut
    Pour réaliser l'exemple précis que tu as donné, tu peux le faire facilement en une ligne de Shell :

    Code Shell : Sélectionner tout - Visualiser dans une fenêtre à part
    $ head -n1 fichier1 | grep -q "^0...ALLERSDD" && sed -i "s/^\(.........\)..../\1SDDA/" fichier2

  7. #7
    Membre expérimenté
    Avatar de l4r3nZu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2010
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2010
    Messages : 154
    Par défaut
    tu voi par exemple j'avoue j'ai un peu galeré meme en java mais j'ai quand meme pu me debrouiller seul en creusant dans les librairies et la doc ajouté a cela un peu de bidouillage ca passe tjr !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    package recup;
     
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileWriter;
    import java.io.InputStreamReader;
     
    public class interpretation {
    	String fichier1 = "fichier1.dat";
     
    	String fichier2 = "fichier2.dat";
     
    	public interpretation() {
     
    		String glob;
    		String mess;
    		try {
    			java.io.InputStream ips = new FileInputStream(fichier1);
    			InputStreamReader ipsr = new InputStreamReader(ips);
    			BufferedReader br = new BufferedReader(ipsr);
    			String ligne;
    			String interpretation = "";
     
    			BufferedWriter fWo = new BufferedWriter(new FileWriter(new File(
    					fichier2)));
    			while ((ligne = br.readLine()) != null) {
    				System.out.print("boucle\n");
    				System.out.print(ligne + "\n");
    				glob = ligne.substring(0, 1);
    				mess = ligne.substring(5, 8);
    				System.out.print("!" + mess + "!\n");
    				System.out.print("!" + glob + "!\n");
    				interpretation = "";
    				if (ligne.substring(0, 1).indexOf("U") != -1)
     
    				{
    					interpretation += "         MESS1";
    					interpretation += "    " + ligne.substring(9, 17);
    					fWo.write(interpretation);
    					fWo.newLine();
     
    				}
    				interpretation = "";
    				if (ligne.substring(0, 1).indexOf("O") != -1)
     
    				{
    					interpretation += "         MESS2";
    					interpretation += "    " + ligne.substring(9, 17);
    					fWo.write(interpretation);
    					fWo.newLine();
     
    				}
    			}
    			br.close();
    			fWo.close();
    		} catch (Exception e) {
    			System.out.println(e.toString());
    		}
    	}
     
    	public static void main(String args[]) {
    		interpretation inter = new interpretation();
     
    	}
     
    }
    fichier source :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    O    SDD	12345678
    U    SDD	12345678
    O    SDD	12345678
    O    SDD	12345678
    U    SDD	12345678
    U    SDD	12345678
    O    SDD	12345678
    faire exactement la meme chose en unix serai niquel

  8. #8
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 485
    Par défaut
    Citation Envoyé par l4r3nZu Voir le message
    faire exactement la meme chose en unix serai niquel
    As-tu essayé la ligne de Shell que je t'ai proposé juste au-dessus ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Twitter publiera Storm, le système de traitement de flux de données
    Par Hinault Romaric dans le forum Actualités
    Réponses: 4
    Dernier message: 09/08/2011, 13h15
  2. probleme avec l outil recherche (flux de donnée) dans SSIS
    Par zizu89 dans le forum Alimentation
    Réponses: 0
    Dernier message: 21/07/2011, 19h55
  3. Probleme JBPortal 2.6 : Le flux de données est déjà fermé
    Par tinico dans le forum Wildfly/JBoss
    Réponses: 2
    Dernier message: 05/09/2007, 09h30
  4. [XML] [EXPAT] traitement d'un flux de donnée xml contenant des \n
    Par firejocker dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 23/02/2006, 16h49
  5. Rediriger un flux de données sous linux
    Par Nicaisse dans le forum POSIX
    Réponses: 7
    Dernier message: 01/07/2003, 16h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo