Utilisation de la commande sed

Fermé
doberman91 - 15 déc. 2007 à 19:51
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 15 déc. 2007 à 22:11
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!
A voir également:

4 réponses

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
15 déc. 2007 à 20:06
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
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
la commande ne fonctionne pas... il me dit

sed: -e expression n°1, caractère 30: option inconnue pour `s'
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
15 déc. 2007 à 22:11
Tu peux afficher la commande que tu as tapée ?
0