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 :

c shell + commande sed


Sujet :

Shell et commandes GNU

  1. #1
    Membre averti
    Inscrit en
    Avril 2005
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 51
    Par défaut c shell + commande sed
    comment utiliser la commande sed pour remplcer une chaine de caractere par une autre dans un ficheir

    je veux remplacer
    -}****
    par
    -}
    merci de m'aider

  2. #2
    Membre chevronné
    Avatar de argoet
    Inscrit en
    Mai 2002
    Messages
    582
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 582
    Par défaut
    Vous pouvez vous inspirer de ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cat mon_fichier |  sed "s/\*//g"

  3. #3
    Membre averti
    Inscrit en
    Avril 2005
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 51
    Par défaut
    merci pour la réponse
    Citation Envoyé par argoet Voir le message
    Vous pouvez vous inspirer de ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cat mon_fichier |  sed "s/\*//g"
    peux-tu expliquer au débutant que je suis
    s/\*//g
    le slash et l'ante -slash

    merci pour ton aide

  4. #4
    Membre averti
    Inscrit en
    Avril 2005
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 51
    Par défaut
    voila mon script
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    cd "c:/Temp_flex"
    for x in `ls`
    do
    cat $x >> SKB-FLEX.D`date +%d%m%y`_0000`date +%OH%OM`
    mv $x "c:/archive_flex_out"
    done
     
    mv SKB-FLEX.D`date +%d%m%y`_0000`date +%OH%OM` "c:/test/"
    jusqua' la c bon, mais dans mon fichier d'arrivée SGM-FLEx..., je dois enlever des étoiles (jai que je veux remplacer pas juste )

  5. #5
    Membre chevronné
    Avatar de argoet
    Inscrit en
    Mai 2002
    Messages
    582
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 582
    Par défaut
    Ceci veut dire : subsitue "*" (\*) par rien //

    * fait partie des "Meta caractères" et pour ne pas etre interpreté comme tel , il faut le preceder d'un "anti slash"

    Vous pouvez voir aussi la description de sed ici

  6. #6
    Membre averti
    Inscrit en
    Avril 2005
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 51
    Par défaut
    ça ne marche pas, voila l'erreur qu'il me sort

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    sed: ?, *, +, or { } not preceded by valid regular expression
    sed: ?, *, +, or { } not preceded by valid regular expression
    voila la partie du script

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cat $x | sed "s/\*****//g"

  7. #7
    Membre averti
    Inscrit en
    Avril 2005
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 51
    Par défaut
    g compris, il faut mettre juste une seule étoile; ça marche mais juste sur la sortie standard (cad sur l'écran), comment faire de sorte que la modification soit définitive dans le fichier lui même

    merci encore

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

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 472
    Par défaut
    Citation Envoyé par man sed
    -i[SUFFIX], --in-place[=SUFFIX]

    edit files in place (makes backup if extension supplied)
    A noter que toutes les étoiles du fichier vont disparaître.

    On peut également utiliser tr pour avoir le même résultat avec un syntaxe encore plus simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "n'importe*quoi*" | tr -d '*'
    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

  9. #9
    Membre averti
    Inscrit en
    Avril 2005
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 51
    Par défaut
    c bon ça marche,

    voila mon script

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    cd "c:/Temp"
    for x in `ls`
    do
    cat $x |sed "s/\*//g" >>SKB.D`date +%d%m%y`_0000`date +%OH%OM`
    mv $x "c:/archive"
    done
    mv SKB.D`date +%d%m%y`_0000`date +%OH%OM` "e:/app/data/bo/
    "

    comme vous remarque le nom de mon fichier SKB.D....
    est composée d'une date et d'une heure, j'aurai aimé le stocké dans une variable de peur que l'heure change au cour de l'exécution du script.

    comment puis-je modifier mon script

    merci encore pour votre aide précieuse

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

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 472
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    bla=$(date)
    echo $bla
    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

  11. #11
    Membre chevronné
    Avatar de argoet
    Inscrit en
    Mai 2002
    Messages
    582
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 582
    Par défaut
    en csh
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    set V_FIC="SKB.D`date +%d%m%y`_0000`date +%OH%OM`"
     
    cd "c:/Temp"
    for x in `ls`
    do
       cat $x |sed "s/\*//g" >> $V_FIC
       mv $x "c:/archive"
    done
    mv $V_FIC "e:/app/data/bo/"

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

Discussions similaires

  1. Shell => Commande sed
    Par PythonNovices dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 19/02/2015, 18h22
  2. Shell => Commande sed
    Par PythonNovices dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 23/01/2015, 11h24
  3. commandes sed via un shell
    Par prentyss dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 07/05/2008, 15h22
  4. c shell + commande sed
    Par gaucher dans le forum Linux
    Réponses: 3
    Dernier message: 15/11/2007, 12h42
  5. La commande sed ne prend pas ma variable du shell
    Par Michaël dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 03/10/2006, 19h11

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