Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
pratique:informatique:recherche [16/03/2016 12:00] Zatalyzpratique:informatique:recherche [11/08/2023 08:53] (Version actuelle) – [Avec grep] Zatalyz
Ligne 1: Ligne 1:
 ====== Trouver et remplacer des informations ====== ====== Trouver et remplacer des informations ======
 +===== Avec grep =====
  
 Chercher une info dans un tas de log dans un dossier et sortir les résultats dans un fichier à part : Chercher une info dans un tas de log dans un dossier et sortir les résultats dans un fichier à part :
Ligne 6: Ligne 7:
 Mais pour du récursif j'ai pas encore trouvé bien probant. Celle-ci marche mais va chercher dans tous les types de fichiers. Mais pour du récursif j'ai pas encore trouvé bien probant. Celle-ci marche mais va chercher dans tous les types de fichiers.
   grep -nri "Recherche" > nomfichier.txt   grep -nri "Recherche" > nomfichier.txt
 +
 +Si les dossiers sont de même profondeur (cas des logs), ceci peut marcher :
 +  grep -nri "Recherche" log/2020/*/*.log
 +
 +Autres options sympas de grep :
 +  * ''--color'' : met en couleur ce qui est recherché (permet de voir plus vite si c'est bien le bon truc).
 +  * ''-C N'' (N est un nombre) : affiche les lignes avant et après, afin d'avoir le contexte. Chaque bloc est séparé par des doubles tirets. 
 +    * ''-A N'' : idem mais uniquement les lignes après l’occurrence ("after").
 +    * ''-B N'' : idem mais uniquement les lignes avant l’occurrence ("before").
 +
 +Pour afficher seulement les fichiers où apparait ce qu'on cherche, c'est ''-l''. Et donc, de façon récursive, sans tenir compte de la case, pour n'afficher que le nom des fichiers :
 +  grep -lri "truc" dossier/*
 +===== Avec find =====
 +
 +Pour chercher une chaîne de caractères uniquement dans les fichiers d'une certaine extension (pour l'exemple les fichiers .txt) :
 +  find . -type f -iname '*.txt' -exec grep -i "recherche" {} \;
  
  
Ligne 17: Ligne 34:
 Puis dans les noms de fichiers : Puis dans les noms de fichiers :
   find . -type f|while read f; do mv $f `echo $f |tr '[:upper:]' '[:lower:]'`; done   find . -type f|while read f; do mv $f `echo $f |tr '[:upper:]' '[:lower:]'`; done
 +
 +
 +===== Fichiers trop longs =====
 +Dans le cas des fichiers de log trop longs, que grep et les éditeurs de texte n'arrivent plus à lire (erreurs variées), on découpe le fichier en plusieurs morceaux. 
 +
 +On créé un dossier où mettre les morceaux, puis on coupe toutes les 1000 lignes :
 +
 +  mkdir canal.log.d 
 +  split -l 10000 \#canal.log canal.log.d/part.
 +
 +
 +
CC Attribution-Noncommercial-Share Alike 4.0 International Driven by DokuWiki
pratique/informatique/recherche.1458126042.txt.gz · Dernière modification : 30/11/2020 10:35 (modification externe)