Forum Linux.débutant Ecrire dans un fichier à un endroit donné

Posté par  .
Étiquettes : aucune
0
22
nov.
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.
  • # sed ?

    Posté par  . Évalué à 4.


    sed -i "s/.*:gilbert/$nouveau_mot_de_passe:gilbert/" fichier_des_mots_de_passe
    • [^] # Re: sed ?

      Posté par  . É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  . Évalué à 1.

        aux temps pour moi, je l'ai vraiment balancé trop vite...
    • [^] # Merci

      Posté par  . É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 :)
  • # rien à voir

    Posté par  (site web personnel) . Évalué à 1.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.