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

Shell et commandes GNU Discussion :

Filtre recherche et modification de chaine de caractères


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2008
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 19
    Par défaut Filtre recherche et modification de chaine de caractères
    Bonjour,
    j'essai d'établir un script en ksh qui semble simple mais qui ne l'est pas tant que ça.

    Je pars d'un repertoire général.
    Ce repertoire contient des fichiers d'une extensions particluières dans des sous répertoires.
    Je récupère ceux-ci sans difficulté.(fichier)
    Maintenant pour chacun des fichiers :
    je veux chercher les lignes qui contiennent un =
    sur ces lignes (var1)je récupère une première partie a gauche du premier =
    (var2)je récupère le reste (oui il peut y avoir des = dans le reste)
    j'enregistre dans un fichier datedujour;fichier;var1;var2

    Qu'est ce que j'arrive à faire :

    récupérer les fichiers. récupérer la date du jour. Enregistrer une ligne dans un fichier

    Qu'est ce que je n'arrive pas à faire :

    récupérer var1 et var2 Actuellement le soucis vient des sauts de lignes je pense avec les ``.

    Voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
            for fichier in `find $REP_SOURCE -name \*.montype`
              do
                   for ligne in "$(grep = $fichier)"
                       do
                        var1=`echo "$ligne" | awk -F"=" {'print $1'}`
                        var2=`echo "$ligne" | awk -F"=" {'print $2'}`
                       echo $DATE_JOUR";"$fichier";"$var1";"$var2>> $REP_LOGS$FIC_TBS
                    done
            done

  2. #2
    Membre averti
    Inscrit en
    Mai 2008
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 19
    Par défaut
    Je tiens aussi à signaler que je peux également récupérer la ligne directement dans mon fichier du moment qu'il y a le =

    puis transformer toutes les lignes en remplaçant le premier = par un ; mais seulement le 1 er . C'est une autre piste que je tente de creuser

  3. #3
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 672
    Par défaut
    Bonjour,

    les boucles for sont inutiles : find va trouver les fichiers, puis -executer le traitement que tu souhaites sur chacun.

    je préconise awk pour le traitement des fichiers et la redirection du résultat vers un autre fichier.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  4. #4
    Membre averti
    Inscrit en
    Mai 2008
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 19
    Par défaut
    De ce que je comprends tu le ferais donc en une ligne ?

  5. #5
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 672
    Par défaut
    c'est ça.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  6. #6
    Membre averti
    Inscrit en
    Mai 2008
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 19
    Par défaut
    pour le moment j'ai seulement réussi à récupérer les lignes concernées de cette manière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find $MonRepSource -name \*.MonType -exec grep = {} \; >> $MonFichier
    Je ne vois pas comment inclure soit le remplacement du premier = par ; soit les awk avec redirection ect

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

Discussions similaires

  1. Modification de chaine de caractères
    Par Maveck dans le forum Langage
    Réponses: 2
    Dernier message: 29/04/2008, 18h12
  2. Réponses: 4
    Dernier message: 23/01/2008, 14h08
  3. Réponses: 4
    Dernier message: 07/12/2006, 11h01
  4. Recherche de texte dans chaine de caractère
    Par Requin15 dans le forum Oracle
    Réponses: 13
    Dernier message: 14/09/2006, 12h10

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