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 :

Sed et fichier passwd


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite Avatar de jmelyn
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2007
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Septembre 2007
    Messages : 703
    Par défaut Sed et fichier passwd
    Bonjour,

    Une question, pour une fois: Dans mon fichier /etc/passwd, je voudrais changer la ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    toto:x:12345:123:Toto TOTO:/home/toto:/sbin/nologin
    en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    toto:x:12345:123:Toto TOTO:/home/toto:/bin/bash
    J'ai bien la musique, mais pas les paroles:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -i 's@^toto:\(([^:]*:){5}\)@toto\1/bin/bash@' /etc/passwd
    Bon, je sais le faire avec awk, mais je voudrais aussi être capable avec sed...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk 'BEGIN {FS=OFS=":"} {if ($1 == "toto") {$7="/bin/bash"} print}' /etc/passwd > /etc/passwd.new
    Merci d'avance pour votre aide.

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    792
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 792
    Par défaut
    Hello,

    sed avec regex étendues:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    sed -r 's#(toto.+:).+#\1/bin/bash#'
    toto:x:12345:123:Toto TOTO:/home/toto:/bin/bash
    sed standard:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    sed 's#\(toto.\+:\).\+#\1/bin/bash#'
    toto:x:12345:123:Toto TOTO:/home/toto:/bin/bash
    Edit J'ai corrigé ta version à laquelle il manquait des échappements d'opérateur regex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed 's#^\(toto:\([^:]*:\)\{5\}\).\+#\1/bin/bash#'
    Il y avait également une parenthèse mal placée et il te manquait la fin de la chaîne. Amusant hein, les échappements en regex POSIX! Alors maintenant place à la lisibilité:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -r 's#^(toto:([^:]*:){5}).+#\1/bin/bash#'

  3. #3
    Membre émérite Avatar de jmelyn
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2007
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Septembre 2007
    Messages : 703
    Par défaut
    Merci Ripat pour l'explication précise, et pour avoir corrigé ma version. Je ne connaissais pas le "+" ni les regex étendues. J'ai encore du boulot pour les longues soirées d'hiver au coin du feu...

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

Discussions similaires

  1. Commande sed : mon fichier de sortie est vide
    Par danyboy85 dans le forum Unix
    Réponses: 1
    Dernier message: 23/07/2009, 11h39
  2. [Exercice] Fichiers passwd
    Par jmelyn dans le forum Shell et commandes GNU
    Réponses: 21
    Dernier message: 01/04/2009, 14h38
  3. fichier PASSWD corrompu
    Par corridea dans le forum Solaris
    Réponses: 1
    Dernier message: 20/03/2008, 23h17
  4. [CVSNT] Pb avec fichier passwd
    Par ego dans le forum CVS
    Réponses: 1
    Dernier message: 28/11/2007, 20h50
  5. Awk - Traiter chaque ligne du fichier passwd
    Par tony montana dans le forum Linux
    Réponses: 7
    Dernier message: 25/03/2004, 09h40

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