Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Supprimer une linge contenant une valeur spécifiée ?

7 réponses
Avatar
toto
Bonjour,

J'ai un fichier texte qui comporte ce genre de lignes:

07:05:52 192.168.74.100 [1]sent /****.zip 550
07:05:56 192.168.74.100 [1]created *****.zip 226
07:06:03 85.69.44.171 [2]USER **** 331
07:06:03 85.69.44.171 [2]PASS - 230

Je souhaiterai supprimer toutes les lignes dans lesquels on trouve
192.168.74.
Dans cet exemple, ce sont les 2 premieres lignes mais c'est en fait
aléatoire.
(En gros, il s'agit d'un fichier log dans lequel je veux supprimer toutes
les lignes faisant référence aux adresses Ip en 192.168.74.*)

Est-il possible de réaliser un batch dos qui fait cela ?

Merci !

7 réponses

Avatar
Lotre
Bonjour,


Je souhaiterai supprimer toutes les lignes dans lesquels on trouve
192.168.74.



Un ligne dans un *.cmd devrait convenir :

FINDSTR /V 192.168.74. F:fichier0.log > F:fichier1.log

Le traitement est en général très rapide...
( plusieurs dizaines de milliers de lignes par seconde)

A+

HB
Avatar
toto
Cela fonctionne à merveille !
Un grand merci !

J'ai une deuxieme question:
par endroit j'ai des lignes vides.
Là encore comment faire pour les supprimer ?

J'ai essayé avec cela:
FOR /F %%i in ('TYPE 2006.txt') DO IF NOT "%%i"=="" Echo %%i>> 2006.log

Mais cela n'est pas concluant car en fait cela supprime tout ce qu'il trouve
après un espace dans la ligne:

Exemple du fichier avant le passage de la commande:
#Software: Microsoft Internet Information Services 5.1
#Version: 1.0
#Date: 2006-11-20 14:55:49


#Software: Microsoft Internet Information Services 5.1
#Version: 1.0
#Date: 2006-11-20 14:55:50

Après le passage de la commande:
#Software:
#Version:
#Date:
#Software:
#Version:
#Date:

Donc comment faire pour laisser mes lignes comportants des espaces intactes
tout en supprimant les lignes vides ?

Merci !
Avatar
Brat'ac
toto avait énoncé :
Cela fonctionne à merveille !
Un grand merci !

J'ai une deuxieme question:
par endroit j'ai des lignes vides.
Là encore comment faire pour les supprimer ?

J'ai essayé avec cela:
FOR /F %%i in ('TYPE 2006.txt') DO IF NOT "%%i"=="" Echo %%i>> 2006.log



essai comme cela

for /f "delims=" %%a in ('type fichier.txt') do echo.%%a>>fichier1.txt
Avatar
toto
Merci !

Cela fonctionne très bien !
Avatar
toto
Bonjour,

En fait cela fonctionne bien sur un petit fichier.

J'essaye d'appliquer cette méthode sur un fichier de 7 Mo et là c'est très
très long à démarrer. En fait je ne sais même pas si cela ne plante pas car
ej ne vois aucune ligne déffiler même en attendant 5 minutes.

Lorsque je fais mes autres recherches avec FINDSTR c'est beaucoup plus
rapide même sur les gros fichiers.

Est-il donc possible de laisser mes lignes comportants des espaces intactes
tout en supprimant les lignes vides à m'aide de FINDSTR ?
Ou y a-t-il une autre méthode plus rapide ?

Merci pour vos conseils
Avatar
Lotre
bonjour,


En fait cela fonctionne bien sur un petit fichier.
J'essaye d'appliquer cette méthode sur un fichier de 7 Mo et là
c'est
très très long à démarrer. En fait je ne sais même pas si cela ne
plante pas




En effet, For /F avec 'type' en entrée est assez maladroit ...
et je ne suis pas sûr que Type ne limite pas la taille du fichier à
lire...

Mieux vaut lire une à une les lignes du fichier...

Avec le traitement précédent ça nous fait donc
en deux lignes :

FINDSTR /V 192.168.74. "F:fichier 0.log" > "F:fichier 1.log"

for /f "usebackq delims=" %%a in ("F:Fichier 1.log") do echo %%a >>
"F:Fichier 2.log"

HB
Avatar
toto