Forum Programmation.shell Ajouter un mot au debut de la ligne sur shell

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
0
13
fév.
2019

Bonjour

je veux ajouter un mot comme OScam dans la première ligne d'un fichier

L'État du fichier

monFichie:
1 11.495
2 revision 1497
3 2019-02-12 21:48:24
4 fix reset to wrong defaults
5
6
.
.
.
..
n
ce que je veux

monFichie:
1 OScam 11.495
2 revision 1497
3 2019-02-12 21:48:24
4 fix reset to wrong defaults
5
6
.
.
.
..
n

  • # Pas du tout intéressant comme information

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

    Oui information, car il n'y a même pas de question si je ne m'abuse.

    Mais si c'était une question, c'est aussi inquiétant car c'est quand même le niveau zéro de maitrise du shell, des e/s, des pipes et des connecteurs. Il y a sur le net d'excellents tutoriels sur les bases de la ligne de commande, et tu y arriveras en moins de 2h en partant de rien.

    Après si c'est une demande d'intervention, je ne suis pas sûr que ce soit le meilleur endroit, le tarif horaire est devenu assez élevé ici si on regarde les dernières demandes du même style, et ce n'est pas mon genre de pratiquer la guerre des prix.

  • # Outils préféré ?

    Posté par  . Évalué à 2.

    Bonjour mino60,

    Tu peux utiliser sed pour insérer du texte dans un fichier.
    Il y a une option pour insérer à la première ligne et une option pour insérer en début de ligne, tu dois pouvoir combiner les 2.
    Je ne saurais t'en dire plus sans faire une recherche, ce n'est pas un outil que j'utilise tous les jours.

    Pour connaître les options soit dans un terminal, tu tapes man sed soit tu cherches sur google, sed insérer mot en début de ligne sed insérer mot sur la première ligne et tu t'inspires de ce que tu trouves.

    Si tu as le temps, fait nous part de tes trouvailles et de problèmes éventuels que tu as rencontrés.

    :-)

    Julien_c'est_bien (y'a pas que Seb)

    • [^] # Re: Outils préféré ?

      Posté par  . Évalué à 1.

      Ça me donne Oscam dans tout les lignes

      sed i- '/^ / OScam/g'

      • [^] # Re: Outils préféré ?

        Posté par  . Évalué à 2. Dernière modification le 13 février 2019 à 16:34.

        de mémoire le g dans sed i- '/^ / OScam/**g**' veut dire général, afin de généraliser à toutes les lignes, essaies sans le g et si ça ne fonctionne pas, il faudra que tu modifie la commande pour qu'elle ne fonctionne que sur la première ligne.

        Julien_c'est_bien (y'a pas que Seb)

  • # Avec sed

    Posté par  . Évalué à 4. Dernière modification le 13 février 2019 à 17:09.

    sed -ri '1s/(.*)/OScam \1/' nomDuFichierÀmodifier

    NOTE : Histoire de ne pas confondre ce qui est affiché avec un L minuscule,
    c'est le numéro de la ligne (chiffre 1) qui est juste avant le caractère s

  • # Avec cat

    Posté par  . Évalué à 2.

    echo -n "OScam " > toto
    cat toto tonfichier > tonfichier0
    rm tonfichier
    mv tonfichier0 tonfichier

    • [^] # Re: Avec cat

      Posté par  . Évalué à 2.

      Il faudra penser à supprimer le fichier toto


      Sinon, on peut aussi,
      toujours avec cat en bash
      mais sans le fichier toto

      echo -n "OScam " | cat - tonfichier > tonfichier0 && rm -f tonfichier && mv tonfichier{0,}
      • [^] # Re: Avec cat

        Posté par  . Évalué à 1.

        Pas mal ta version.
        Oui j'avais oublié le rm toto
        Je ne maitrise pas encore toutes les subtilités des pipes (cat -).
        J'aime beaucoup l'astuce tonfichier{0,}

        • [^] # Re: Avec cat

          Posté par  . Évalué à 4.

          J'ai beaucoup appris en lisant les pages du The Bash Hackers Wiki
          (et surtout, qu'il me reste encore beaucoup à apprendre, mais bon, comme j'aime çà … )

Suivre le flux des commentaires

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