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

Résolu/Fermé
kiki - 14 déc. 2012 à 10:13
feeder Messages postés 4 Date d'inscription lundi 31 décembre 2012 Statut Membre Dernière intervention 31 décembre 2012 - 31 déc. 2012 à 13:48
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 33372 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 22 novembre 2024 7 802
14 déc. 2012 à 10:26
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 lundi 31 décembre 2012 Statut Membre Dernière intervention 31 décembre 2012 1
31 déc. 2012 à 13:48
Bonjour,
peut etre avec un "find" et un "sed":

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

A+
0