Faire un don ! | | style | statistiques | contactez-nous | plan | lettre d'information

Linux.debutant : Ecrire dans un fichier à un endroit donné

Posté par Jerepain () le 22 novembre 2007
Bonjour. Je suis nouveau en shell, et j'ai un petit souci.

J'ai un fichier contenant des logins et des mots de passe comme suit :



11a3e229084349bc25d97e29393ced1d:gilbert

82c16692a7f9040f3a6eb6a6a3f3c141:marlyse



J'ai codé les mot de passe via md5sum.

Je dois écrire un script permettant de modifier ces mot de passe, seulement je n'ai aucune idée de quelle commande utiliser. Le ">>" permet d'écrire dans un fichier, mais j'aimerais choisir l'endroit. Et je ne connais pas non plus la commande pour supprimer à un endroit donné non plus.

> Lire le message (6 commentaires, moyenne: 2).  

Vous avez demandé le commentaire #884621.

sed ?

Posté par B. franck () le 22/11/2007 à 17:52. (lien). Évalué à 4.


sed -i "s/.*:gilbert/$nouveau_mot_de_passe:gilbert/" fichier_des_mots_de_passe

  • [^]Re: sed ?

    Posté par Christophe --- () le 22/11/2007 à 19:22. (lien). Évalué à 4.

    Ouais, je confirmes, sed c'est dien... par contre pour la regexp, je proposerai plutôt:


    "s/^[0-9a-f]*:$username\$/$nouveau:$username/"


    le but:
    - éviter les petits rigolos qui joueraient avec un ':' dans le username pour contourner le système;
    - éviter les bugs si il y au aussi un username 'gilberte'...

    • [^]Re: sed ?

      Posté par B. franck () le 23/11/2007 à 17:39. (lien). Évalué à 1.

      aux temps pour moi, je l'ai vraiment balancé trop vite...

    [^]Merci

    Posté par Jerepain () le 22/11/2007 à 19:40. (lien). Évalué à 1.

    Merci beaucoup, ça marche nikel :)

    En fait si je comprends bien, on remplace tout ce qui a avant gilbert par le $nouveau_mot_de_passe. Ce qui est bien c'est que ça se limite à une ligne :)

    Merci encore :)