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 :

rechercher les champs BDD dans des fichiers .txt


Sujet :

Linux

  1. #1
    Membre du Club
    Inscrit en
    Juin 2008
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 83
    Points : 56
    Points
    56
    Par défaut rechercher les lignes d'un fichier dans plusieurs fichiers .txt
    Bonjour,

    J'aimerai vérifier l'existence de mes champs contenus dans ma table T1 au contenu de plusieurs fichiers txt se trouvant dans mon dossier /TXT/

    J'imagine que la manière la plus simple est d'utiliser un grep via un script ksh.
    Mais voilà je n'y arrive vraiment pas.

    Auriez-vous des pistes de réflexion à me proposer?

    Je vous remercie d'avance :o)

    Bonne journée!

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    417
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2007
    Messages : 417
    Points : 376
    Points
    376
    Par défaut
    pourrais tu être un peu plus précis.

    si c est rechercher des occurences dans un fichier un grep peut solutionner ton problème ... ou pas, cela dépend de la complexité de ce que tu veux faire précisément

  3. #3
    Membre du Club
    Inscrit en
    Juin 2008
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 83
    Points : 56
    Points
    56
    Par défaut
    D'une part, je possède une table T1ne contenant qu'une colonne: table_name ayant pour champ le nom de tables (comme le nom l'indique)
    D'autre part, j'ai plusieurs fichiers *txt. Ces fichiers contiennent des requêtes sql dont des insert, update, merge sur des tables listés dans la table T1.

    J'aimerais faire une correspondance entre toutes les tables contenues dans les différentes requêtes des fichiers txt et les tables issus de ma table T1.

    Le résultat final serait de me lister les tables non-utilisés (autrement dit, contenu uniquement dans T1).

    J'espère avoir été plus clair.
    Merci pour ta réponse Ashin

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    417
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2007
    Messages : 417
    Points : 376
    Points
    376
    Par défaut
    ok

    je ne pense pas que grep seul puisse faire l'affaire

    ce qu'il faut faire c est prendre une table de T1 et la chercher dans tes fichiers txt et retourner le résultat puis passer a la suivante etc ...

    un script perl pourrait etre bien pour ça



    moi je ferais une boucle foreach pour chaque élément de ton fichier T1,
    dans cette boucle tu fais un grep sur cet élément pour chercher dans tous tes fichiers txt et par rapport au code de retour tu fais ce dont tu as besoin

    en perl ça donnerais quelque chose comme ça mais ça doit se faire en shell aussi:
    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
    #! /usr/local/bin/perl
     
    my $INPUT_FILE = "T1";
    my $OUTPUT_FILE = "output.txt";
    my $TXT_FILES = "rq1.txt rq2.txt rq3.txt";
    my @StructTable = ();
     
    #tu copies ton fichier T1
    open (HANDLE_INPUT_FILE, $INPUT_FILE) || die "open problem of $INPUT_FILE : $!";
    my @contenu = <HANDLE_INPUT_FILE>;
    close(HANDLE_INPUT_FILE);
     
    foreach my $line (@contenu) 
    {
    	chomp $line;
    	system("grep -s $line $TXT_FILES");
    	if ( $? eq "0" )
    	{
    		print "pattern $line present\n";
    	}
    	else
    	{
    		print "pattern $line non present\n";
    		push @StructTable, $line;
    	}
    }
     
    open (HANDLE_OUTPUT_FILE, ">$OUTPUT_FILE") || die "open problem of $OUTPUT_FILE : $!";
    foreach my $ligne (@StructTable) {
        chomp $ligne;
        print HANDLE_OUTPUT_FILE "$ligne\n";
    	}
    close(HANDLE_OUTPUT_FILE);
    c est pas un code compilable, c est juste pour te donner une idée

    edit : finalement je l ai testé, tu as la liste des pattern non utilisé dans output.txt

  5. #5
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 916
    Points
    17 916
    Billets dans le blog
    2
    Par défaut
    grep + awk + sed devrait t'aider pas mal...
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  6. #6
    Membre du Club
    Inscrit en
    Juin 2008
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 83
    Points : 56
    Points
    56
    Par défaut
    Merci pour vos réponses!
    Je galère un peu là, je vous l'avoue pour le faire. J'essaie d'avancer mais pas facile!
    @Souviron3: grep + awk + sed hum ok je vais voir par là.

    Et auriez-vous des exemples de script shell (ksh) qui utilise une connexion a une base de données sql pour liser des champs?
    Merci beaucoup d'avance!
    Bonne semaine!

  7. #7
    Membre du Club
    Inscrit en
    Juin 2008
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 83
    Points : 56
    Points
    56
    Par défaut
    Bonjour,

    Bon, je vais changer de méthode. Au lieu de faire une requête directement via sqlplus, j'ai enregistrer les champs de ma table T1 dans un fichier txt tables.txt.

    Il faut donc que je recherche chaque ligne de mon fichier tables.txt dans les fichiers txt se trouvant dans mon dossier /TXT/

    J'aimerai avoir un sorti un fichier output.txt reprenant ma liste de tables ainsi que le nombre d'occurences se trouvant dans les fichiers.

    EXEMPLE:
    tables.txt:
    table_un
    table_deux
    table_trois

    output.txt:
    table_un 0
    table_deux 5
    table_trois 1
    ETC..

    Jai commencé à développer un ptit truc, mais je suis loin du compte.
    J'avais pensé à parcourir chaque fichier et dans chaque fichier rechercher chaque ligne de ma tables.txt.
    Pensez-vous que je m'y prends de la bonne façon?:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    for i in `ls *.sql`
    do
    cat fichier.txt | while read line
    do
    cat $i | grep -c "$line"
    if [[ $? -ne 0 ]] then
     echo "1" $line $i >> file.txt
    break
    fi
    done
    done
    Je suis encore loin du compte mais si vous pensé que je m'y prends de la mauvaise manière, je vous serai reconnaissant de m'indiquer vos pistes de réflexion.

    Merci beaucoup!

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

Discussions similaires

  1. [Batch] acceder à des repertoires distants dont les IP sont dans un fichier txt
    Par kriegmaster dans le forum Scripts/Batch
    Réponses: 7
    Dernier message: 21/05/2015, 10h33
  2. find + grep recherche de plusieurs mots dans des fichiers différents
    Par sakura.haruno dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 27/04/2010, 22h58
  3. récuperer les champs saisi dans un fichier
    Par wrigan dans le forum Langage
    Réponses: 1
    Dernier message: 06/12/2009, 12h40
  4. Recherche d'une phrase dans un fichier txt
    Par beegees dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 03/07/2007, 08h44
  5. [code]Recherche d'une chaine dans des fichiers
    Par guillaume_pays_ceven dans le forum Contribuez
    Réponses: 5
    Dernier message: 21/06/2007, 14h32

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