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
A voir également:

2 réponses

dubcek Messages postés 19021 Statut Contributeur 5 637
 
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 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
juliencolin54 Messages postés 238 Statut Membre 55
 
Tu pourrais rediriger la sortie dans un autre fichier et le tour est joué.
0
dubcek Messages postés 19021 Statut Contributeur 5 637
 
oui, il faut rediriger la sortie
on ne peut pas écrire dans le fichier qu'on lit
0
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
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
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
dubcek Messages postés 19021 Statut Contributeur 5 637
 
ne pas uiliser la redirection en entrée
findstr /v /c:1015138 fichier.txt
0
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
dubcek Messages postés 19021 Statut Contributeur 5 637
 
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 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