Utilisation de la commande sed

doberman91 -  
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,
je voudrais utiliser la commande sed pour rajouter une chaine de caractère à la fin d'une ligne dans un de mes fichier.

ex:
secretaire:x:1000:toto, titi, tutu
toto:x:2000:dam, bill
titi:x:3000:dagoba
prod:x:4000:earth

je voudrais rajouter à la fin d'une ligne un autre nom avec un point virgule pour le séparer.
mais je n'arrive pas a utiliser la commande sed, donc si quelqu'un pouvait me dépanner ca serait cool merci d'avance!

4 réponses

  1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,
    $ cat plop
    secretaire:x:1000:toto, titi, tutu
    toto:x:2000:dam, bill
    titi:x:3000:dagoba
    prod:x:4000:earth
    
    $ sed '/titi/ s/.*/&;doberman91/' plop
    
    secretaire:x:1000:toto, titi, tutu;doberman91
    toto:x:2000:dam, bill
    titi:x:3000:dagoba;doberman91
    prod:x:4000:earth
    Rajoute l'option "-i.bak" pour faire une sauvegarde de ton fichier original et faire en sorte que les modifications soient effectuées sur le fichier original...
    sed -i.bak '/titi/ s/.*/&;doberman91/' plop
    ;-))
    0
  2. doberman91
     
    merci beaucoup, j'avou que je ne savasi vraiment pas comment faire!!

    j'aurais une autre question, peut être pourras tu y repondre, je crée mon script pour créé un utilisateur.(je ne dois pas utiliser user add)

    masi j'ai un problème pour donne rl'UID à l'utilisateur. Monscript va marcher, masi si on me supprime une ligne, alors l'UID supprimer ne sera pas réutilisé.
    Si tu pouvasi m'éclaircir sur la voie a prendre , ca serait génial.

    voici mon code actuel pour l'affectation de l'UID.

    echo `grep -w $groupe /etc/NIS/passwd | cut -d: -f 3| sort -g >> tmp`
    n=`cat tmp | wc -l`
    ligne=`cat tmp`

    nb_place=`expr 1000 - $n`
    echo "il te reste $nb_place dans le groupe $groupe"
    UserId=$groupID
    for i in $ligne
    do
    if [ $i -gt $UserId ];
    then
    UserId=$i
    echo $UserId
    fi
    if [ $UserId -gt $fin ];
    then
    echo "YOU LOSE"
    exit 0
    fi
    done

    UserId=`expr $UserId + 1`
    echo "Le user Id utilise sera $UserId"

    voila. mais si l'on supprime, l'UID ne sera plus utilisé car moi je prend l'UDI le plus grand de mon fichier password poru ceux qui font partie de tel group.
    $group nom du groupe auquel il appartient et $groupID c'est le GID, je considere que mon UID est entre le GID et GID +1000

    merci d'avance
    0
  3. doberman
     
    la commande ne fonctionne pas... il me dit

    sed: -e expression n°1, caractère 30: option inconnue pour `s'
    0
  4. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Tu peux afficher la commande que tu as tapée ?
    0