Supprimer ligne(s) dans un fichier

[Résolu/Fermé]
Signaler
Messages postés
260
Date d'inscription
lundi 28 novembre 2011
Statut
Membre
Dernière intervention
7 août 2020
-
Messages postés
260
Date d'inscription
lundi 28 novembre 2011
Statut
Membre
Dernière intervention
7 août 2020
-
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

Messages postés
18246
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
21 juillet 2021
5 331
hello
avec la command findstr. Répeter les /c:chaine si il y plusieurs suppressions:
findstr /v /c:1015138 < fichier.txt
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Messages postés
217
Date d'inscription
dimanche 22 juillet 2012
Statut
Membre
Dernière intervention
1 octobre 2013
55
Tu pourrais rediriger la sortie dans un autre fichier et le tour est joué.
Messages postés
18246
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
21 juillet 2021
5 331
oui, il faut rediriger la sortie
on ne peut pas écrire dans le fichier qu'on lit
Messages postés
260
Date d'inscription
lundi 28 novembre 2011
Statut
Membre
Dernière intervention
7 août 2020

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 ?
Messages postés
217
Date d'inscription
dimanche 22 juillet 2012
Statut
Membre
Dernière intervention
1 octobre 2013
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.
Messages postés
260
Date d'inscription
lundi 28 novembre 2011
Statut
Membre
Dernière intervention
7 août 2020

Salut,
Finalement, Je suis parti sur une autre solution, mais comme ça ne fonctionne pas non plus, je pense que je vais ouvrir un autre sujet...
En tout cas, merci bien pour votre aide et bonne journée.
Messages postés
217
Date d'inscription
dimanche 22 juillet 2012
Statut
Membre
Dernière intervention
1 octobre 2013
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û ?
Messages postés
18246
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
21 juillet 2021
5 331
ne pas uiliser la redirection en entrée
findstr /v /c:1015138 fichier.txt
Messages postés
217
Date d'inscription
dimanche 22 juillet 2012
Statut
Membre
Dernière intervention
1 octobre 2013
55
En effet, je pense qu'il doit attendre un signal tel de EOF pour se terminer.
Merci de l'info en tout cas !
Messages postés
18246
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
21 juillet 2021
5 331
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
..
Messages postés
217
Date d'inscription
dimanche 22 juillet 2012
Statut
Membre
Dernière intervention
1 octobre 2013
55
Ce qui est logique puisque du coup findstr n'opère pas sur le fichier mais sur l'entrée standard !