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 :

Problème scripting


Sujet :

Linux

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2005
    Messages
    283
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2005
    Messages : 283
    Points : 114
    Points
    114
    Par défaut Problème scripting
    Salut tout le monde,

    j'ai un fichier de log, chaque ligne commence par une information de date codée de la manière suivante : Mois en trois lettres + espace + jour en deux chiffres (pas de zéros de remplissage).

    Je dois copier chaque ligne de ce fichier dans un autre fichier user.tmp

    le problème est qu'à cause du format de la date (mois et jour séparé par un espace), je n'arrive pas à faire fonctionner le grep correctement.

    Quelqu'un à une idée ?

    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
     
    #!/bin/ksh
    REP='/log/user.log'
     
    DATE=`date +%b' '%e`
     
     
    echo $DATE
    echo purge de user.log
    echo 
     
       if
     	(grep -c $DATE $REP)>0
       then
            grep -c  $DATE $FICHIER
            echo ${REP%.*}.tmp "Créé"
            grep  $DATE $REP > ${REP%.*}.tmp 
       else    	
       	grep -c  $DATE $FICHIER
     
       	echo $REP "Mis à zéro"   	
       fi

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Février 2005
    Messages
    283
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2005
    Messages : 283
    Points : 114
    Points
    114
    Par défaut
    ps : je dois copier chaque ligne de ce fichier dont la date vaut la date du jour

  3. #3
    Expert confirmé
    Avatar de Katyucha
    Femme Profil pro
    DevUxSecScrumOps Full Stack Bullshit
    Inscrit en
    Mars 2004
    Messages
    3 287
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Irlande

    Informations professionnelles :
    Activité : DevUxSecScrumOps Full Stack Bullshit

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 287
    Points : 5 075
    Points
    5 075
    Par défaut Re: problème scripting
    donne nous quelques lignes du fichier entre balise code
    Grave urgent !!!

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Février 2005
    Messages
    283
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2005
    Messages : 283
    Points : 114
    Points
    114
    Par défaut
    oui bien sur, en voicis quelques une

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Jul 31 23:40:00 servername  ftp[45548]: ftp: EXPORT user root, host rm...
    Jul 31 23:40:01 servername TIVOLI: TECAD_HEART 
    Aug  1 00:10:00 servername ftp[45548]: ftp: EXPORT user root, host ...
    Aug  1 00:10:01 servername TIVOLI: TECAD_HEART
    cela ne se voit pas bien mais entre Aug et 1 il y à deux espaces et non un

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Février 2005
    Messages
    283
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2005
    Messages : 283
    Points : 114
    Points
    114
    Par défaut
    je vais aussi vous envoyer le message d'erreur que je reçoit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    grep : 0652-033 Cannor open 5

  6. #6
    Modérateur
    Avatar de ggnore
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 472
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 472
    Points : 4 029
    Points
    4 029
    Par défaut
    as tu essayé en mettant $DATE entre guillemets ?

    ton if m'a l'air faux. Essaye entre crochets et fais

    http://madchat.org/coding/sh/write_a_shell_script-fr.htm
    Toutes les vertus des hommes se perdent dans l’intérêt comme les fleuves se perdent dans la mer.
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Février 2005
    Messages
    283
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2005
    Messages : 283
    Points : 114
    Points
    114
    Par défaut
    je ne comprend pas très bien où tu veux que je mettre $DATE entre guillement, pourais tu me dire où je dois mettre "$DATE" ?

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Février 2005
    Messages
    283
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2005
    Messages : 283
    Points : 114
    Points
    114
    Par défaut
    en fait je ne suis pas sur que le problème soit le if car quand je tape la commande grep avec le paramètre date et le nom du fichier j'obtient la même erreur

  9. #9
    Modérateur
    Avatar de ggnore
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 472
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 472
    Points : 4 029
    Points
    4 029
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    etienne@info1:~ $ DATE=`date +%b' '%e`
    etienne@info1:~ $ DATE2=`echo $DATE | sed 's/ /\\ /'`
    etienne@info1:~ $ echo "aoû 5" | grep "$DATE2"
    aoû 5
    Toutes les vertus des hommes se perdent dans l’intérêt comme les fleuves se perdent dans la mer.
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Février 2005
    Messages
    283
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2005
    Messages : 283
    Points : 114
    Points
    114
    Par défaut
    je comprend rien à ce que tu veux me dire ,... je ne connais unix que depuis quelques heures lol

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Février 2005
    Messages
    283
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2005
    Messages : 283
    Points : 114
    Points
    114
    Par défaut
    je n'ai pas internet chez moi donc je ne pourai plus vous répondre à partir de lundi, bon we à tous

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Février 2005
    Messages
    283
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2005
    Messages : 283
    Points : 114
    Points
    114
    Par défaut
    je voulais dire avant lundi,.. je suis fatigué moi,...

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Février 2005
    Messages
    283
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2005
    Messages : 283
    Points : 114
    Points
    114
    Par défaut
    I think that the error is that the date return something like "May 18" to the grep, and then the grep think that he must search for the string "May" in the file "18". To have not such a problem I think that I must code the blank caracter with a unix code that represent the blank caracter.

    but I cannot encode the blank caractère in a string because the date is returned by the Date function,

    then how can I use a function to replace a blank by a code representing a blank ?

    someone can help ?

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Février 2005
    Messages
    283
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2005
    Messages : 283
    Points : 114
    Points
    114
    Par défaut
    désolé, j'ai encore joué à mon Jean claude vandamme,... à force de trainer sur des forums anglais,...

    en gros j'aurais besoin de savoir comment on code le caractère blank en unix pour pouvoir le passer en paramètre à la commande grep,

    et aussi comment faire pour remplacer dans une variable string qui contiendrait une chaine avec des blancs, tout les blancs par un code représentant le blanc.

    quelqu'un saurait m'aider ? j'ai été sur google mais j'ai pas trouvé,....

  15. #15
    Membre régulier
    Profil pro
    Inscrit en
    Février 2005
    Messages
    283
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2005
    Messages : 283
    Points : 114
    Points
    114
    Par défaut
    J'ai essayé en ligne de commande, pour rechercher des chaines de caractères contenant des espaces avec grep je n'ai qu'à utiliser des guillements. Alors j'ai utilisé dans mon code la ligne suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    grep "'"$DATE"'" $FICHIER > ${FICHIER%.*}.tmp
    mais quand je fais un sh -x NomDeMaProcedure, je vois que quand cette ligne s'exécute les guillements sont enlevés.

    Quelqu'un à une idée ?

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Février 2005
    Messages
    283
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2005
    Messages : 283
    Points : 114
    Points
    114
    Par défaut
    la ligne correcte était :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    grep "$DATE" $FICHIER > ${FICHIER%.*}.tmp
    merci à tous

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

Discussions similaires

  1. Quel est le meilleur script PHP de portail (CMS) ?
    Par Lana.Bauer dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 187
    Dernier message: 18/10/2012, 07h45
  2. quel langage choisir pour faire de script sous windows
    Par pas05 dans le forum Langages de programmation
    Réponses: 7
    Dernier message: 18/11/2002, 22h42
  3. ListView->Items->Clear() !!! Qques probl de perf
    Par Nicolas_a69 dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/08/2002, 11h49
  4. Réponses: 2
    Dernier message: 11/07/2002, 08h31

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