Supprimer ligne(s) dans un fichier

Résolu
Ka-El Messages postés 279 Statut Membre -  
Ka-El Messages postés 279 Statut Membre -
Bonjour,
je possède un fichier qui contient une suite de numéro. Quand je tape "type fichier.txt", voici ce que j'obtiens :
1015133
1015134
1015135
1015136
1015137
1015138
1015139
1015140
1015141
1015142
1015143
1015144
1015145
1015146
1015147
1015148
1015149
1015150
1015151
1015152
1017915
1017944

Voici mon problème :
Dans le cas où j'aurais besoin de supprimer le numéro "1015138" comment devrait procéder en ligne de commande ?
Idem, dans le cas ou je devrais supprimer 2 ou plusieurs numéros de cette liste, comment puis-je faire ?

Merci d'avance pour votre aide.
K

2 réponses

  1. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    hello
    avec la command findstr. Répeter les /c:chaine si il y plusieurs suppressions:
    findstr /v /c:1015138 < fichier.txt
    1
    1. Ka-El Messages postés 279 Statut Membre
       
      Salut Dubcek,
      Effectivement cette commande affiche la liste sans les numéros que j'aurais préalablement notifié dans le champ /c:chaine
      En revanche, quand je retourne dans mon fichier avec la commande type, les numéros sont toujours présents.
      N'y a t-il pas un moyen de supprimer directement les numéros dans le fichier ?
      En tout cas, merci pour ton aide.
      K
      0
    2. juliencolin54 Messages postés 238 Statut Membre 55
       
      Tu pourrais rediriger la sortie dans un autre fichier et le tour est joué.
      0
    3. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
       
      oui, il faut rediriger la sortie
      on ne peut pas écrire dans le fichier qu'on lit
      0
    4. Ka-El Messages postés 279 Statut Membre
       
      J'ai tenté de rediriger la sortie dans le même fichier, mais celui-ci est écrasé :
      findstr /v /c:1015150 /c:1015142 ka-el.txt > ka-el.txt

      Il n'y a pas un moyen d'obtenir le résultat dans le même fichier ?
      0
    5. juliencolin54 Messages postés 238 Statut Membre 55
       
      Tu peux faire un fichier temporaire !
      Soit tu copie la source au début, dans un autre fichier, et tu fait un findstr copie > source
      Soit tu redirige dans un fichier différent, que tu renommes ensuite en fichier source.

      A toi de choisir.
      0
  2. juliencolin54 Messages postés 238 Statut Membre 55
     
    Bonjour,

    Vraiment sympa cette commande, elle me sera utile ! :)

    Par contre avec votre exemple , lorsqu'il n'y a pas de ligne vide en fin de fichier, la commande est comme en "pause", ou en boucle inf, je ne sais pas.

    A quoi est-ce que c'est dû ?
    0
    1. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
       
      ne pas uiliser la redirection en entrée
      findstr /v /c:1015138 fichier.txt
      0
    2. juliencolin54 Messages postés 238 Statut Membre 55
       
      En effet, je pense qu'il doit attendre un signal tel de EOF pour se terminer.
      Merci de l'info en tout cas !
      0
    3. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
       
      la redirection permet d'éviter l'affichage du nom du fichier, avec find par ex.:
      C:> find /v "1015138" < f1.txt
      1015133
      1015134
      ...
      C:> find /v "1015138" f1.txt

      ---------- F1.TXT
      1015133
      1015134
      ..
      0
    4. juliencolin54 Messages postés 238 Statut Membre 55
       
      Ce qui est logique puisque du coup findstr n'opère pas sur le fichier mais sur l'entrée standard !
      0