Batch : Converser les lignes commençant par ...

Fermé
Maggie - 4 févr. 2013 à 18:37
 Nash008 - 18 janv. 2017 à 10:44
Bonjour,

J'ai un fichier en entrée d'un programme ".bat" et j'aimerai supprimer, donc conserver que certaines lignes de ce fichier.

Or si j'utilise la fonction FINDSTR, l'exécution me retourne l'erreur

"
FINDSTR : la ligne 1 est trop longue
"

et effectivement mes lignes font en moyenne plus de 3 000 caractéres.

Avez-vous une solution ?

4 réponses

[Dal] Messages postés 6194 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 11 octobre 2024 1 092
Modifié par [Dal] le 5/02/2013 à 10:25
Salut Maggie,

Si tu tiens à utiliser la console windows, et que tu disposes de powershell, tu peux faire cela :

ouvre une console powershell dans le répertoire où se trouve ton fichier :

start powershell

puis, en supposant que tu veuilles garder toutes les lignes commençant par "LIGNE A CONSERVER" contenues dans mon_fichier.txt, et mettre le résultat dans extraction.txt, lance (sur une seule ligne) :

gc "mon_fichier.txt" | select-string "^LIGNE A CONSERVER" | select line > extraction.txt

Avec un peu de chance, powershell n'aura pas ce type de limitations.


Dal
1
[Dal] Messages postés 6194 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 11 octobre 2024 1 092
5 févr. 2013 à 10:31
Il te faudra juste ensuite éditer "extraction.txt" pour retirer l'intitulé de la colonne "Line" que powershell ajoute à la sortie, mais c'est juste 2 lignes à retirer :-)
0
C'est exactement cela, ça marche!
0
[Dal] Messages postés 6194 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 11 octobre 2024 1 092
Modifié par [Dal] le 4/02/2013 à 19:28
Salut Maggie,

Comme ta question ne porte pas spécialement sur un langage particulier, ou un outil particulier, personnellement, j'utiliserai l'éditeur vim, venu tu monde Linux (et Unix avec vi) avec lequel tu peux (notamment) utiliser une regexp associée à l'action de suppression.

En supposant que tu veuilles supprimer toutes les lignes ne commençant pas par "LIGNE A CONSERVER", tu fais :

:g!/^LIGNE A CONSERVER/d

https://vim.fandom.com/wiki/Delete_all_lines_containing_a_pattern
https://www.vim.org/download.php#pc

Je te concède qu'il faut domestiquer vim, qui n'est pas un éditeur comme un autre, mais une fois que c'est fait, on ne peut plus s'en passer :-)


Dal

Edit : simplification de la regexp
0
J'utilise la console windows et je ne peux rien installer d'autre sur mon poste...
0
dubcek Messages postés 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 5 621
5 févr. 2013 à 12:46
hello
chez moi, findstr trouve bien des textes sur des lignes de 5000 caractères.
montre un exemple de ligne et de recherche.
0