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 :

Problème avec sed


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Etudiant
    Inscrit en
    Mai 2020
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Mai 2020
    Messages : 42
    Par défaut Problème avec sed
    Bonjour,
    J'essaye de modifier le texte contenue dans mon fichier. Pour cela j'utilise la commande sed. Cependant je ne sais pas quelle chaîne de caractère je vais modifier. Je vous mets mon code pour que cela soit plus clair :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    _fCountry=$(whois ${IP} | grep country: | awk '{ print $2}'|uniq >flag.txt)
    sed -i "s/??????????????????/${IP} : :&: /" flag.txt
    Voila mon problème ... En gros ça prend le pays d'ou vient l'ip et l'enregistre dans un document txt. Mais après je veux modifier ce doc pour avoir quelque chose qui resemble à ca par exemple: ip :FR: au lieu de ça : ip : FR

    J'espère que j'ai été assez clair

    Bapth

  2. #2
    Membre averti
    Homme Profil pro
    Etudiant
    Inscrit en
    Mai 2020
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Mai 2020
    Messages : 42
    Par défaut
    Bon bah j'ai réussi au final. J'ai tout simplement enlever la redirection :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    _fCountry=$(whois ${IP} | grep country: | awk '{ print $2}'|uniq)
    $(whois ${IP} | grep country: | awk '{ print $2}'|uniq>flag.txt)
    sed -i "s/${_fCountry}/${IP} : :&: /"  flag.txt
    Voila ça pourra peut être aider certaines personnes
    @+
    Bapth

  3. #3
    Membre émérite Avatar de balkany
    Homme Profil pro
    Touriste
    Inscrit en
    Juillet 2017
    Messages
    348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Touriste

    Informations forums :
    Inscription : Juillet 2017
    Messages : 348
    Par défaut
    C'est pas tout simplement ça que tu veux faire ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    whois "$ip" | sed -nE "/^country:\s*([^ ]*)$/{s//$ip : :\1: /p; q}"

  4. #4
    Membre averti
    Homme Profil pro
    Etudiant
    Inscrit en
    Mai 2020
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Mai 2020
    Messages : 42
    Par défaut
    Euh je suis débutant dans ce domaine et je comprends pas bien ta ligne de code . Pourrais-tu la détailler comme ca je pourrai apprendre de nouvelles choses.
    Merci

  5. #5
    Membre émérite Avatar de balkany
    Homme Profil pro
    Touriste
    Inscrit en
    Juillet 2017
    Messages
    348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Touriste

    Informations forums :
    Inscription : Juillet 2017
    Messages : 348
    Par défaut
    La première partie du programme sed : /^country:\s*([^ ]*)$/ remplace à peu près ton grep et ton awk, en sélectionnant dans les lignes qui commencent par country: la partie finale qui correspond au pays.
    La seconde partie du programme : s//$ip : :\1: /p; q fait à peu près la même chose que ta commande sed finale, en quittant dès la première ligne trouvée (remplace le uniq).

    C'est peut-être plus simple de le faire avec awk d'ailleurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    whois "$ip" | awk -v ip="$ip" '/^country:/{print ip " : :" $2 ": "; exit}'

  6. #6
    Membre averti
    Homme Profil pro
    Etudiant
    Inscrit en
    Mai 2020
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Mai 2020
    Messages : 42
    Par défaut
    Merci bien. J'ai bien compris
    Bonne continuation,
    Bapth

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

Discussions similaires

  1. [OS X] [SH] Problème avec sed et fichier texte
    Par RyuAutodidacte dans le forum Shell et commandes POSIX
    Réponses: 8
    Dernier message: 13/06/2019, 16h04
  2. Problème avec sed * et +
    Par DIE dans le forum Shell et commandes GNU
    Réponses: 7
    Dernier message: 02/11/2009, 10h34
  3. Problème avec SED et les caractères "/" sur Solaris
    Par supermen3000 dans le forum Solaris
    Réponses: 2
    Dernier message: 03/07/2009, 11h14
  4. [Shell] problème avec sed et awk
    Par tizilfin dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 15/11/2007, 13h01
  5. Problème avec sed
    Par Zlika_ese dans le forum Linux
    Réponses: 1
    Dernier message: 26/05/2007, 21h39

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