Supprimer ligne(s) dans un fichier

Résolu/Fermé
Ka-El Messages postés 260 Date d'inscription lundi 28 novembre 2011 Statut Membre Dernière intervention 7 août 2020 - 19 sept. 2013 à 10:44
Ka-El Messages postés 260 Date d'inscription lundi 28 novembre 2011 Statut Membre Dernière intervention 7 août 2020 - 20 sept. 2013 à 09:31
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 18719 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 4 mai 2024 5 615
19 sept. 2013 à 11:06
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 lundi 28 novembre 2011 Statut Membre Dernière intervention 7 août 2020
19 sept. 2013 à 11:19
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 dimanche 22 juillet 2012 Statut Membre Dernière intervention 1 octobre 2013 55
19 sept. 2013 à 11:46
Tu pourrais rediriger la sortie dans un autre fichier et le tour est joué.
0
dubcek Messages postés 18719 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 4 mai 2024 5 615
19 sept. 2013 à 12:13
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 lundi 28 novembre 2011 Statut Membre Dernière intervention 7 août 2020
19 sept. 2013 à 14:25
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 dimanche 22 juillet 2012 Statut Membre Dernière intervention 1 octobre 2013 55
19 sept. 2013 à 14:30
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 dimanche 22 juillet 2012 Statut Membre Dernière intervention 1 octobre 2013 55
19 sept. 2013 à 11:13
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 18719 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 4 mai 2024 5 615
Modifié par dubcek le 19/09/2013 à 12:21
ne pas uiliser la redirection en entrée
findstr /v /c:1015138 fichier.txt
0
juliencolin54 Messages postés 217 Date d'inscription dimanche 22 juillet 2012 Statut Membre Dernière intervention 1 octobre 2013 55
19 sept. 2013 à 14:33
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 18719 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 4 mai 2024 5 615
19 sept. 2013 à 14:58
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 dimanche 22 juillet 2012 Statut Membre Dernière intervention 1 octobre 2013 55
19 sept. 2013 à 15:27
Ce qui est logique puisque du coup findstr n'opère pas sur le fichier mais sur l'entrée standard !
0