Ajouter un mot en début de ligne spécifique

Ajouter un mot en début de ligne spécifique Ajouter une mot en fin de ligne (Résolu) » Forum - Linux / Unix Ajouter un mot au debut de 100,000,000 mots » Forum - Programmation Notepad++ chercher et si résultat ajoute un mot au début de la l » Forum - Programmation Espace entre deux mots en début et fin de ligne (Résolu) » Forum - Word [linux/shell] inserrer texte en début ligne (Résolu) » Forum - Programmation

Bonjour,

Je souhaiterai commenter (en ajoutant une dièse en début de ligne) automatiquement des lignes contenant des lettres précise dans un fichier ini.

Par exemple je souhaiterai commenter une ligne qui contient les lettres "mysql", la ligne peut donc contenir le mot "mysql_cluster" ou encore "variable_mysql"..

La seule chose que j'arrive à faire actuellement c'est de supprimer les lignes en question avec la commande ci-dessous, je n'ai pas trouvé mieux :(

Type %fichier% |Findstr /v "mysql" > %ftemp%


Si vous avez des idées je suis preneur,

Merci.

Forum

Ajouter un mot en début de ligne spécifique Ajouter une mot en fin de ligne (Résolu) » Forum - Linux / Unix Ajouter un mot au debut de 100,000,000 mots » Forum - Programmation Notepad++ chercher et si résultat ajoute un mot au début de la l » Forum - Programmation Espace entre deux mots en début et fin de ligne (Résolu) » Forum - Word [linux/shell] inserrer texte en début ligne (Résolu) » Forum - Programmation

Web: www.shapebootstrap.net

5 réponses

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Bonjour,

Essaie comme ça :

for /f "usebackq delims=" %%A in ("%fichier%") do (
echo %%A | findstr "mysql" && echo # %%A >> %ftemp% || echo %%A >> %ftemp%
)


Reply
réponses:
  • auteur

    Bonjour barnabe,

    Merci beaucoup cela fonctionne bien en effet !

    le usebackq est nécessaire pour ajouter un guillemet derrière le delims afin de préciser que le caractère délimiteur c'est le saut de ligne c'est ça ?

    Je demande car j'essais de comprendre votre code et souhaiterai que les sauts de ligne soit également insérés dans le fichier texte de destination mais je n'y arrive pas après plusieurs essais infructueux.

  • barnabe0057

    Le usebackq sert à indiquer à la boucle FOR qu'il s'agit d'un fichier ("%fichier%") et pas d'une chaine de caractères.

  • barnabe0057

    Voilà la modif que tu souhaites :

    for /f "usebackq delims=" %%A in ("%fichier%") do (
    if not defined %%A (echo. >> %ftemp%)
    echo %%A | findstr "mysql" && echo # %%A >> %ftemp% || echo %%A >> %ftemp%
    )

  • auteur

    Bonjour Barnabe,
    Merci pour l'explication je comprend mieux pourquoi ma variable correspondait au nom du chemin du fichier plutôt qu'à l'intérieur sans le usebackq.

    Merci pour la modif !
    If not defined ne correspond pas tout à fait à mon besoin car il met un saut de ligne a chaque ligne et je souhaiterai un saut de ligne uniquement lorsque sur le fichier source il y en a un.

    J'ai modifié le script afin qu'il n'y ait pas de saut de ligne lorsque la ligne commence par un #, l'idéal serait qu'il fasse un saut de ligne lorsque la ligne commence par un caractère vide mais je ne trouve pas comment faire.


    SETLOCAL ENABLEDELAYEDEXPANSION
    for /f "usebackq delims=" %%A in (%fichier%) do (
    set firstchar=%%A
    set firstchar=!firstchar:~0,1!
    if !firstchar! EQU # echo. >> %ftemp%
    echo %%A | findstr "mysql" && echo # %%A >> %ftemp% || echo %%A >> %ftemp%
    )

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed