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 :

Ajouter chaine de caractère à la suite d'une chaine déjà existante dans un fichier


Sujet :

Shell et commandes GNU

  1. #1
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    1 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 080
    Points : 287
    Points
    287
    Par défaut Ajouter chaine de caractère à la suite d'une chaine déjà existante dans un fichier
    Bonjour,

    J'aimerai savoir comment je peux ajouter une chaine de caractère à la suite d'une chaine déjà existante dans un fichier :

    exemple :

    Je veux ajouter un utilisateur "michel" à un groupe "users"

    dans /etc/gshadow :

    root::
    titi::
    users::martin::michel
    tomcat::

    Ne me dite pas utilise groupadd, car en faite je dois faire un script à la norme POSIX, et groupadd n'est pas à cette norme...

    Merci d'avance de votre aide !

  2. #2
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2006
    Messages
    61
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2006
    Messages : 61
    Points : 58
    Points
    58
    Par défaut
    bonjour,

    le plus simple est de parcourir ton fichier en stockant tes infos, et apres tu reecris ton fichier en ajoutant ton nom sur la bonne ligne

  3. #3
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    1 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 080
    Points : 287
    Points
    287
    Par défaut
    et comment je peux faire ca ?

  4. #4
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    1 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 080
    Points : 287
    Points
    287
    Par défaut
    Avec SED onm'a dit qu'on pouvait le faire, mais comment ?

    on m'as parlé d'un truc du genre

    SED "fichier_source" "ligne à modifier" "la_ligne_à_modifier+la_nouvelle_chaine" > "fichier source"

    Le soucie, malgrès lire le man, je n'arrive pas à trouvé la bonne syntaxe...

  5. #5
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Citation Envoyé par arnaudperfect
    Le soucie, malgrès lire le man, je n'arrive pas à trouvé la bonne syntaxe...
    Bienvenu dans le monde des manuels Unix C'est clair que c'est pas facile à lire parfois, surtout celui de sed. Un lien qui pourrait t'aider : http://www.grymoire.com/Unix/Sed.html. Y a plein d'exemples et de cas pratiques, ça aide à comprendre l'outil. Ceci dit, la base de sed, ce sont les expressions régulières donc faut être familiarisé avec la bête.

    Pour ton truc, il faut utiliser le mécanisme de substitution de base de sed : s/filtre/transformation/

    Il te faut donc d'abord une expression régulière qui te permette d'identifier de manière certaine la ligne à modifier. Je te propose ceci : "^users:" à interpréter comme "la ligne qui commence par "users:"" (^ = début de ligne). Ca me semble pas mal.

    Il te faut ensuite une transformation. Dans ton cas, tu veux ajouter un truc en fin de ligne, donc ça doit être assez simple : "\0::ajout" à condition que \0 contienne toute la ligne. Donc pour utiliser ça, faut modifier le filtre pour faire "contenir" toute la ligne dans \0 : "^users:.*$".

    D'où finalement, si l'utilisateur à ajouter est contenu dans la variable shell $user :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed 's/^users:.*$/\0::'$user'/' /etc/groups > /etc/groupsbis
    A tester, je fais ça come ça en live. A adapter si nécessaire en fonction de l'OS...

    Pour la petite histoire, il vaut mieux utiliser les guillemets simples ' pour les expressions sed afin d'éviter les mauvaises substitutions ou interprétation du caractère $ (indicateur de fin de ligne). D'où, qu'il faut fermer le ' et le rouvrir après pour pouvoir substituer $user par sa valeur (c'est du shell de base).

  6. #6
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    1 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 080
    Points : 287
    Points
    287
    Par défaut
    Merci de tes explications Mac !

    Ca marche nickel

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

Discussions similaires

  1. [XL-2003] Retrouver la suite d'une chaine de caractères
    Par Invité dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 08/01/2014, 14h14
  2. Réponses: 1
    Dernier message: 02/04/2010, 15h14
  3. Réponses: 5
    Dernier message: 02/12/2009, 00h27
  4. [Toutes versions] Ajouter une chaine de caractère à la fin d'une autre chaine
    Par esstin dans le forum Excel
    Réponses: 2
    Dernier message: 02/05/2009, 15h54
  5. Réponses: 2
    Dernier message: 03/10/2008, 13h50

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