Script pr extraire des lignes et les copier ds un nveau fichier

Résolu
kiki -  
feeder Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Excusez-moi si je dis de grosses bêtises mais je suis novice en script shell...

Je dispose dans un répertoire de 30 répertoires contenant des logs.
Je souhaiterai extraire de ces fichiers toutes les lignes contenant par exemple le mot "connexion" mais ne contenant pas le mot "demo" et copier le resultat dans un nouveau fichier....

Par exemple, quelque chose de ce genre:
grep -r connexion "C:\tmp\logs\log20121030\*.log" > "C:\tmp\essai.txt"
grep -v demo "C:\tmp\essai.txt" > "C:\tmp\essai2.txt"

Il me crée mes fichiers essai, mais vide, alors que je suis sûr que ces fichiers contiennent la donnée.

Mon poste est encore sous windows XP.
Encore merci par avance à tous ceux qui pourront ou tenteront de m'aider.
A voir également:

2 réponses

mamiemando Messages postés 33774 Date d'inscription   Statut Modérateur Dernière intervention   7 882
 
C'est beaucoup plus simple en faisant un pipe (prononcer "païpe") :

grep -nr "connexion" /mon/dossier/de/logs | grep -v "demo" > /mon/fichier.txt 


Tu peux empiler plusieurs commandes avec | (par exemple cmd1 | cmd2 | cmd3 | ...) et donc enchaîner autant de grep que tu le souhaites (ou même d'autres commandes), c'est comme un lego.

L'idée ensuite c'est que quand ta chaîne de commandes ne fait pas ce qu'il faut, tu la construis petit à petit et tu regardes à chaque fois le résultat écrit dans le terminal (par exemple cmd1, puis cmd1 | cmd2, puis cmd1 | cmd2 | cmd3 etc).

Bonne chance
1
feeder Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   1
 
Bonjour,
peut etre avec un "find" et un "sed":

find . -exec sed -n '/demo/!{/connexion/p}' {} \;

A+
0