Supprimer ligne(s) dans un fichier

Résolu
Ka-El Messages postés 260 Date d'inscription   Statut Membre Dernière intervention   -  
Ka-El Messages postés 260 Date d'inscription   Statut Membre Dernière intervention   -
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
A voir également:

2 réponses

dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 636
 
hello
avec la command findstr. Répeter les /c:chaine si il y plusieurs suppressions:
findstr /v /c:1015138 < fichier.txt
1
Ka-El Messages postés 260 Date d'inscription   Statut Membre Dernière intervention  
 
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
juliencolin54 Messages postés 217 Date d'inscription   Statut Membre Dernière intervention   55
 
Tu pourrais rediriger la sortie dans un autre fichier et le tour est joué.
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 636
 
oui, il faut rediriger la sortie
on ne peut pas écrire dans le fichier qu'on lit
0
Ka-El Messages postés 260 Date d'inscription   Statut Membre Dernière intervention  
 
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
juliencolin54 Messages postés 217 Date d'inscription   Statut Membre Dernière intervention   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
juliencolin54 Messages postés 217 Date d'inscription   Statut Membre Dernière intervention   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
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 636
 
ne pas uiliser la redirection en entrée
findstr /v /c:1015138 fichier.txt
0
juliencolin54 Messages postés 217 Date d'inscription   Statut Membre Dernière intervention   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
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 636
 
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
juliencolin54 Messages postés 217 Date d'inscription   Statut Membre Dernière intervention   55
 
Ce qui est logique puisque du coup findstr n'opère pas sur le fichier mais sur l'entrée standard !
0