Simplifier un grep

Résolu
dna.factory Messages postés 26003 Date d'inscription   Statut Modérateur Dernière intervention   -  
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Une fois n'est pas coutume, j'ai la solution à mon problème...
Mais j'en suis pas satisfait, donc je voulais savoir si y'avait plus propre...

j'ai une erreur qui apparait à période régulière parmi une centaines de fichiers de logs NON horodatés.
Je veux savoir quand cette erreur se produit

aujourd'hui, j'utilise la boucle suivante :
for fichier in 'grep  -h  chaine  *.log';do ll $fichier;done
(les apostrophes sont inversés (alt+gr7), mais apparament, ça passe pas bien dans le message)
Qu'Est-ce que vous me proposez ?



Stop failing the turing test !

2 réponses

zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431
 
Salut,

Je suppute que ton
grep
sort des chemins absolus de fichiers, puis que tu fais un affichage long avec un alias de
ls -l
histoire d'avoir la date (et éventuellement d'autres renseignements) des dits fichiers, exact ?

Que voudrais-tu améliorer ?
0
dna.factory Messages postés 26003 Date d'inscription   Statut Modérateur Dernière intervention   1 618
 
les chemins sont relatifs, mais en gros, c'est ça...
L'idée, c'est de savoir si je peux me passer du for...
Je suppose que je pourrais le faire avec un find, (doit y'avoir un paramètre pour chercher une chaine dans un fichier, et je peux faire un -exec ls -l (ll) pour avoir le chemin... mais c'est encore plus compliqué..
L'idée en fait, c'est que de mon équipe, je suis le seul à 'maitriser' (un bien grand mot...) le for...
Je voudrais que mon équipe puisse faire la même commande, mais je voudrais qu'ils comprennent.. et si je leur mets un for ou un find... ils feront du copier coller sans comprendre...
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431
 
Et pourquoi pas un simple
grep  -h  chaine  *.log' | xargs ll
?
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
hello
ne serait-ce pas -l plutot que -h ?
0
dna.factory Messages postés 26003 Date d'inscription   Statut Modérateur Dernière intervention   1 618
 
oups... oué...
C'est presque bon, c'est juste que pour une raison étrange, le xargs ne gère pas l'alias...
le
grep -l chaine *.log' | xargs ll 
me ressort
xargs: ll: No such file or directory
par contre, le
grep -l chaine *.log' | xargs ls -l(arth)
fonctionne

Encore mieux... avec cette méthode le rt fonctionne bien, et les fichiers sont mis dans l'ordre..., plus besoin de faire un |sort en précisant la colonne (j'aurais du faire du maner pour retrouver comment faire).

Merci zipe, c'est toi qui prends la tête, et si personne ne vient avec une réponse plus simple, c'est toi gagnera mon éternelle reconnaissance...
0
dna.factory Messages postés 26003 Date d'inscription   Statut Modérateur Dernière intervention   1 618
 
Juste pour info : le xargs a été utilisé plus de 15 fois aujourd'hui par différents technicien...
Merci zipe31
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
hello
et avec
tail -f *.log  | awk '{"date" | getline d; close("date"); print d, $0}'
on affiche devant chaqe ligne, la date du message dans le fichier
0