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 :

Expression régulière invalide


Sujet :

Linux

  1. #1
    Membre confirmé Avatar de yoshï
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 206
    Par défaut Expression régulière invalide
    juste une petite question,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    egrep -i  "^[^:]*:[^:]*: "(nomsansespace1|nomansespace2)" :[^:]* "  #ce script fonctionne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    egrep -i  "^[^:]*:[^:]*: "(nom avec espace1|nom avec espace2)" :[^:]* " #ce script ne fonctionne pas
    ça renvoie l'erreur expression régulière invalide
    Comment faire pour qu'il n'interprète pas les espaces?
    merci d'avance

  2. #2
    Membre Expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Par défaut Re: Expression régulière invalide
    Citation Envoyé par yoshï
    Comment faire pour qu'il n'interprète pas les espaces?
    En les backslashant ???

    Ou en simple quotant le tout au lieu des doubles-quotes ???

  3. #3
    Membre confirmé Avatar de yoshï
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 206
    Par défaut Re: Expression régulière invalide
    En les backslashant ???
    Merci ça fonctionne

    juste une dernière petite chose
    comment utiliser la commande sed pour remplacer des " " par des "\ "
    -->ça fonctionne pas

  4. #4
    Membre Expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177

  5. #5
    Membre confirmé Avatar de yoshï
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 206
    Par défaut
    Citation Envoyé par 2Eurocents
    ça ne fonctionne toujours pas

  6. #6
    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
    etienne@info1:~ $ echo "a b c" | sed "s/\ /\\\ /g"
    a\ b\ c
    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 Expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Par défaut
    Citation Envoyé par yoshï
    Citation Envoyé par 2Eurocents
    ça ne fonctionne toujours pas
    Forcément, j'ai fait une faute de frappe

    il faut supprimer le blanc entre le s et le / !


  8. #8
    Membre confirmé Avatar de yoshï
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 206
    Par défaut
    Je comprends pas j'ai tenté tout ce que vous m'avez conseillé, ça ne fonctionne toujours pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo (Pen of*) | sed -e "s/*/.*/g" | sed -e "s/\ /\\\ /g"
    ça renvoie (Pen of.*)
    idem pour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo (Pen of*) | sed -e "s/*/.*/g" | sed -e "s/ /\\\ /g"

  9. #9
    Membre Expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Par défaut
    chez moi,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "(Pen of*)" | sed "s/*/.*/g" | sed "s/ /\\\ /g"
    affiche

  10. #10
    Membre confirmé Avatar de yoshï
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 206
    Par défaut
    j'ai trouvé d'ou ça vient...
    je ne vous avez pas copié toute la ligne (je ne pensais pas que passer par une variable avait de l'importance)
    en effet quand je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "(Pen of*)" | sed "s/*/.*/g" | sed "s/ /\\\ /g"
    ça renvoit bien
    (Pen\ of.*)
    mais quand je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    param4=`echo "(Pen of*)" | sed "s/*/.*/g" | sed "s/ /\\\ /g"`
    echo $param4
    ça renvoit
    (Pen of.*)
    De quoi ça vient???

  11. #11
    Membre Expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Par défaut
    Citation Envoyé par yoshï
    De quoi ça vient???
    De l'interprétation de "\ " par le shell, pour afficher un " " ... c'est un inconvénient des backticks ``... L'usage de la nouvelle syntaxe en $( ) permet d'éviter ce défaut :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    param4=$(echo "(Pen of*)" | sed "s/*/.*/g" | sed "s/ /\\\ /g")
    echo $param4

  12. #12
    Membre confirmé Avatar de yoshï
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 206
    Par défaut
    Merci bcp pour ton aide 2Eurocents
    j'ai encore un petit problème
    quand je veux transmettre cette variable à une fonction ça ne fonctionne pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    param4=$(echo "($param3)" | sed "s/*/.*/g" | sed "s/ /\\\ /g") 
    		echo "p1avant $param2" #pour tester en entrée le parametre1
    		echo "p2avant $param4" #pour tester en entrée le parametre2
    		filmedia $param2 $param4
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    function filmedia(){
    echo "p1apres $1" #pour tester en sortie le parametre1
    echo "p2apres $2" #pour tester en sortie le parametre2
    voici 2 sorties du script
    sortie 1 quand pas d'espace dans p2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    p1avant artiste
    p2avant (Pen.*)
    p1apres artiste
    p2apres (Pen.*)
    sortie 2 quand espace dans p2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    p1avant artiste
    p2avant (Pen\ of)
    p1apres artiste
    Quand je met un espace je n'arrive pas à récupérer le parametre 2 dans la fonction...

  13. #13
    Membre Expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Par défaut
    Citation Envoyé par yoshï
    quand je veux transmettre cette variable à une fonction ça ne fonctionne pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    param4=$(echo "($param3)" | sed "s/*/.*/g" | sed "s/ /\\\ /g") 
    		echo "p1avant $param2" #pour tester en entrée le parametre1
    		echo "p2avant $param4" #pour tester en entrée le parametre2
    		filmedia $param2 $param4
    Essaye en quotant tes paramètres :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    filmedia "$param2" "$param4"

  14. #14
    Membre confirmé Avatar de yoshï
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 206
    Par défaut
    je t'ai pas tout dit encore une fois (à chaque fois je selectionne dans mon code les détails qui me semblent important ).Mais bon vu le conseil que tu me donnes, il faut que je precises à quoi ressemble la ligne où j'envoie les paramètres
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    numerote "filmedia $param2 $param4"
    comment je fais pour quoter vu que j'utilise déjà les guillemets pour passer un paramètre?
    Merci de ton aide

  15. #15
    Membre Expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Par défaut
    Citation Envoyé par yoshï
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    numerote "filmedia $param2 $param4"
    comment je fais pour quoter vu que j'utilise déjà les guillemets pour passer un paramètre?
    Là, je ne réponds plus de rien, mais le premier essai que je ferais serait en backslashant les quotes internes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    numerote "filmedia \"$param2\" \"$param4\""
    Et le deuxième essai en utilisant des quotes simples au niveau englobant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    numerote 'filmedia "$param2" "$param4"'

  16. #16
    Membre confirmé Avatar de yoshï
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 206
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    numerote 'filmedia "$param2" "$param4"'
    renvoie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    p1avant artiste
    p2avant (pen\ o)
    1 : p1apres "$param2"
    2 : p2apres "$param4"
    -->il les prend comme des chaines

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    numerote "filmedia \"$param2\" \"$param4\""
    renvoie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    p1avant artiste
    p2avant (pen\ o)
    1 : p1apres "artiste"
    -->il passe meme pas le 2eme parametre

    je continue à chercher et vous tient au courant....
    Si vous avez des idées n'hésitez pas à m'en faire part

  17. #17
    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
    je suis pas sûr mais peut être que xargs pourrait t'aider.
    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

Discussions similaires

  1. expression régulière : invalid range in character
    Par JLC83 dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 09/07/2011, 16h33
  2. Expression régulière invalide
    Par Furr dans le forum Boost
    Réponses: 2
    Dernier message: 15/12/2009, 09h25
  3. eregi_replace() : Invalid preceding regular expression
    Par scriptiz dans le forum Langage
    Réponses: 2
    Dernier message: 27/04/2009, 16h23
  4. Réponses: 10
    Dernier message: 29/01/2009, 01h55
  5. [DOM4J] [Jaxen] Invalid Xpath Expression ?
    Par tophebboy dans le forum Format d'échange (XML, JSON...)
    Réponses: 5
    Dernier message: 16/01/2006, 15h23

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