Aide sur script de lecture dans fichiers e nregex
Résolu/Fermé
ginius
-
16 mai 2021 à 12:49
mamiemando Messages postés 33357 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 14 novembre 2024 - 17 mai 2021 à 16:29
mamiemando Messages postés 33357 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 14 novembre 2024 - 17 mai 2021 à 16:29
A voir également:
- Aide sur script de lecture dans fichiers e nregex
- Script vidéo youtube - Guide
- Confirmation de lecture whatsapp - Guide
- É - Guide
- Accusé de lecture gmail - Guide
- Wetransfer gratuit fichiers lourd - Guide
2 réponses
mamiemando
Messages postés
33357
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
14 novembre 2024
7 799
Modifié le 17 mai 2021 à 15:45
Modifié le 17 mai 2021 à 15:45
Bonjour,
Pour chercher les fichiers qui contiennent une chaînes conforme à une expression rationnelle, l'idéal est d'utiliser
La commande type est :
Ensuite il faut écrire la bonne expression rationnelle. Ici tu as mal compris la signification de l'opérateur
De plus les deux expressions rationnelles que tu proposes ont quelques limites :
Voici comment récupérer parmi tous les fichiers dans
Deux remarques sur cette commande :
Pour extraire les noms de fichiers concernés, on peut la compléter comme suit :
Deux remarques sur cette commande :
On peut partant de là exécuter cette commande avec une autre expression rationnelle :
Bonne chance
Pour chercher les fichiers qui contiennent une chaînes conforme à une expression rationnelle, l'idéal est d'utiliser
grepou egrep, en particulier les options
-net
-r. Je te recommande vivement d'utiliser
egrep, qui supporte plus d'opérateurs que
grepet dont la syntaxe est plus pratique.
La commande type est :
grep -nr regexp dossier.
Ensuite il faut écrire la bonne expression rationnelle. Ici tu as mal compris la signification de l'opérateur
{}(ce serait plutôt
[]) dans ton cas. La syntaxe est rappelée dans
man egrep.
De plus les deux expressions rationnelles que tu proposes ont quelques limites :
- IP : tu as défini une expression rationnelle qui détecte les adresses IPv4 mais pas les adresses IPv6. Cette expression rationnelle (une fois la syntaxe corrigée) rattrapera potentiellement des chaînes qui ne sont pas des IPv4 (e.g.
1111.2222.3333.4444
) - Chemin windows : ici tu forces la recherche de chemin absolu impliquant le lecteur C: (or, un chemin windows peut impliquer un autre lecteur). De plus, le caractère
\
doit être échappé (soit en le remplaçant par\\
, soit par[\]
).
Voici comment récupérer parmi tous les fichiers dans
/etcet ses sous dossiers toutes les lignes associés à des adresses IPv4 :
egrep -nr '(((25[0-5]|(2[0-4]|[0-1]{0,1}[0-9]){0,1}[0-9])[.]){3}(25[0-5]|(2[0-4]|[0-1]{0,1}[0-9]){0,1}[0-9]))' /etc 2>/dev/null
Deux remarques sur cette commande :
- l'expression rationnelle détecte exactement les adresses IPv4
- j'ai ajouté en fin de ligne de
2>/dev/null
pour filtrer les messages d'erreurs éventuels (e.g. permissions non accordées).
Pour extraire les noms de fichiers concernés, on peut la compléter comme suit :
egrep -lr '(((25[0-5]|(2[0-4]|[0-1]{0,1}[0-9]){0,1}[0-9])[.]){3}(25[0-5]|(2[0-4]|[0-1]{0,1}[0-9]){0,1}[0-9]))' /etc 2>/dev/null | sort | uniq
Deux remarques sur cette commande :
- on utilise l'option
-l
au lieu de-n
; - l'ajout de
| sort | uniq
permet de trier les résultats dans l'ordre lexicographique et de filtrer les doublons.
On peut partant de là exécuter cette commande avec une autre expression rationnelle :
- IPv6 : tu peux utiliser cette expression rationnelle, pas tout à fait précise (elle peut par exemple rattraper des dates au format hh:mm:ss), mais elle a le mérite d'être simple :
egrep --color -rn '\b(([a-fA-F0-9]{0,4})?(:[a-fA-F0-9]{0,4})+:[a-fA-F0-9]{0,4})\b' /etc 2>/dev/null
- Chemin windows : tu peux par exemple utiliser :
egrep --color -rn '\b[a-zA-Z]:([\]\w*)+\b' /etc 2>/dev/null
Bonne chance
Je te remercie pour ta réponse super complète!!!!!
Dans mon cas ce qui m'arrange c'est que ce ne sont que des IP de type ipv4 qui sont manipulés.
Sinon oui effectivement j'avais pris en compte que les lecteurs windows pouvaient être de n'importe quel caractère.
Je viens de finir mes scripts d'extraction et j'ai pu grâce à ta réponse gagner du temps!!
Merci pour ton aide.
Dans mon cas ce qui m'arrange c'est que ce ne sont que des IP de type ipv4 qui sont manipulés.
Sinon oui effectivement j'avais pris en compte que les lecteurs windows pouvaient être de n'importe quel caractère.
Je viens de finir mes scripts d'extraction et j'ai pu grâce à ta réponse gagner du temps!!
Merci pour ton aide.
mamiemando
Messages postés
33357
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
14 novembre 2024
7 799
17 mai 2021 à 16:29
17 mai 2021 à 16:29
Super :-) Toutes mes félicitations et bonne continuation, je bascule ton sujet en résolu.