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 :

remplacer une champ vide par des données d'un autre fichier


Sujet :

Linux

  1. #1
    Membre actif Avatar de griese
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    646
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 646
    Points : 281
    Points
    281
    Par défaut remplacer une champ vide par des données d'un autre fichier
    Bonjour à tous,
    Je vous explique mon probleme, J'ai deux fichier extraient d'une base de base de données. Ils sont de ce type :

    fichier1 :
    champ1;champ2;champ3;champ4;champ5;champ6
    champ1;champ2;champ3;champ4;champ5;champ6
    champ1;champ2;champ3;champ4;champ5;champ6
    champ1;champ2;champ3;;champ5;champ6
    champ1;champ2;champ3;champ4;champ5;champ6
    champ1;champ2;champ3;;champ5;champ6
    champ1;champ2;champ3;champ4;champ5;champ6
    etc...

    fichier 2 :
    champ11 champ12 champ13
    champ11 champ12 champ13
    champ11 champ12 champ13
    champ11 champ12 champ13
    champ11 champ12 champ13
    champ11 champ12 champ13
    champ11 champ12 champ13
    champ11 champ12 champ13
    etc...

    Le champ3 et le champ13 sont des champs communs au deux fichiers, ils contiennent les même informations. Ensuite, il arrive que dans le fichier1 le champ4 ne contienne rien comme ci dessus. En fait je voudrai pouvoir remplacer ce vide par la valeur de champ11. Connaissez vous une commande qui permettent de pouvoir remplacer une chaine par une autre ? Merci pour vos réponses

  2. #2
    Membre actif Avatar de griese
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    646
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 646
    Points : 281
    Points
    281
    Par défaut
    Je sais pas ce qui se passe en ce moment, mais j'ai un succès fou avec mes posts... J'ai résolu mon problème grâce à la commande sed. Merci à moi même alors

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    792
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 792
    Points : 1 206
    Points
    1 206
    Par défaut
    Citation Envoyé par griese
    Je sais pas ce qui se passe en ce moment, mais j'ai un succès fou avec mes posts... J'ai résolu mon problème grâce à la commande sed. Merci à moi même alors
    Désolé, pas vu ton post. Problème intéressant. On peut voir ta solution avec sed?

  4. #4
    Membre actif Avatar de griese
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    646
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 646
    Points : 281
    Points
    281
    Par défaut
    je sais pas si vous méritez... Bon aller je suis de bonne humeur aujourd'hui
    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
     
    #!/bin/sh
    fichier_complet=$1
    fichier2=$2
    #fichier_sortie=$3
    LIST_AID=$(cut -f2 $fichier_complet)
    LIST_AID2=$(cut -d";" -f3 $fichier2)
    for i in $LIST_AID
    do
            id=`cat $fichier_complet|grep $i|cut -f1`
            for j in $LIST_FTI2
            do
                    if [ $j = $i ]
                    then
                            echo karma= $j
                            remplacement=${j}\;$aid #je créé la chaine que je veux insérer
                            echo $remplacement
                            jprime=${j}\; #je créé la chaine que je souhaite remplacer
                            echo $jprime
                            sed -e "s%$jprime%$remplacement%g" $fichier2 > temp.txt# je remplace la chaine par la nouvelle
                            cat temp.txt > $fichier2
                    fi
            done
    done
    Voila

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    792
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 792
    Points : 1 206
    Points
    1 206
    Par défaut
    Tu n'a pas essayé avec join?

    (ne pas oublier de trier les fichiers sur les colonnes index d'abord - la 3ème dans ton cas)

    Si tes fichiers sont importants, join sera sans doute plus rapide (à tester).

  6. #6
    Membre actif Avatar de griese
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    646
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 646
    Points : 281
    Points
    281
    Par défaut
    Join ca va juste joindre mes deux fichiers, c'est pas ce que je veux, moi je veux remplacer des vides par autres choses, il ne me semble pas que join puisse faire ca

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

Discussions similaires

  1. Remplacer un champ vide par : -
    Par Juwan dans le forum BIRT
    Réponses: 11
    Dernier message: 24/09/2012, 14h29
  2. Remplacer les champs vides par des 0
    Par feldi dans le forum PL/SQL
    Réponses: 8
    Dernier message: 16/11/2011, 20h56
  3. [MySQL] Remplacer une chaîne vide par NULL
    Par whoaloic dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 18/05/2011, 14h29
  4. Réponses: 2
    Dernier message: 28/10/2010, 14h38
  5. [INSERT / UPDATE] Remplacer une valeur vide par NULL
    Par jissay dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 28/09/2006, 14h15

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