Ceci est une ancienne révision du document !


Trouver et remplacer des informations

Chercher une info dans un tas de log dans un dossier et sortir les résultats dans un fichier à part :

grep -i -e "Recherche" log_NAME*.txt > nomfichier.txt

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

Pour chercher une info et afficher son contexte, ici les 5 phrases avant/après, ajouter l'option –context=5. C'est évidement surtout utile sur une occurrence en particulier (pour éviter d'ouvrir tout le fichier), pas lors de la recherche globale.

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" {} \;

Pour remplacer une chaîne de caractère dans des tas de fichier (ORIGINE) par une autre chaîne de caractère (REMPLACANT) et de façon récursive. Caractère d'échappement \ parfois nécessaire, entre autre devant [ :

find . -type f -exec sed -i 's#ORIGINE#REMPLACANT#g' {} \;

Pour transformer les majuscules en minuscules (grâce à tr) dans les noms de dossier (à faire plusieurs fois pour le récursif ? :

find . -type d|while read d; do mv $d `echo $d |tr '[:upper:]' '[:lower:]'`; done

Puis dans les noms de fichiers :

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.1585761341.txt.gz · Dernière modification : 30/11/2020 10:35 (modification externe)