Récupérer une chaine de caractère via GREP, AWK,SED, etc..
Résolu
pcsystemd
Messages postés
734
Statut
Membre
-
pcsystemd Messages postés 734 Statut Membre -
pcsystemd Messages postés 734 Statut Membre -
Bonjour,
Je souhaiterais dans un fichier récupérer la chaine de caractère ci-dessous en gras via une commande comme GREP, AWK, SED ou autre.
Merci de votre aide
L'accès au savoir est la première liberté que chaque homme devrait avoir.
Je souhaiterais dans un fichier récupérer la chaine de caractère ci-dessous en gras via une commande comme GREP, AWK, SED ou autre.
207.209.256.5 - - [04/Apr/2022:20:17:48 +0200] "POST /tver_ag/cont_age/<bold>825318531</bold>/ HTTP/1.0" 200 277 "https://www.monsite/agee/825318531/" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.60 Safari/537.36"
Merci de votre aide
L'accès au savoir est la première liberté que chaque homme devrait avoir.
A voir également:
- Grep caractère spéciaux
- Caractère spéciaux - Guide
- Caractere speciaux - Guide
- Caractere speciaux mac - Guide
- Caractère ascii - Guide
- Caractere speciaux facebook - Guide
4 réponses
Bonjour,
Une autre manière de faire, avec
Explication rapide
Cette commande signifie "trouve l'entier situé après
Explication détaillée
Bonne chance
Une autre manière de faire, avec
sed:
cat fichier | sed -e 's%.*cont_age/\([0-9]*\).*%\1%g
Explication rapide
Cette commande signifie "trouve l'entier situé après
cont_age/et n'écrit que cet entier".
Explication détaillée
-
sed -e 's%motif%remplacement%g'
signifie qu'on remplacemotif
parremplacement
. On pourrait utiliser/
au lieu de%
, mais comme ici notre motif implique lui-même des/
il faudrait les échapper (\/
) ce qui est faisable mais peu élégant, donc ici on utilise plutôt%
. -
motif
est une expression rationnelle. Dans ce langage :-
.
signifie n'importe quel caractère, -
*
signifie que le motif qui précède peut être répété 0 ou un nombre arbitraire de fois, -
[0-9]
désigne n'importe quel caractère ASCII compris entre'0'
et'9'
, ce qui correspond à tous les entiers compris entre0
et9
inclus. -
[0-9]+
signifie une répétition arbitrairement longue d'entiers compris entre0
et9
inclus, donc n'importe quel nombre entier. -
\(...\)
permet àsed
de capturer une partie du motif. Le bloc ainsi rattrapé est désigné par\1
dansremplacement
. Plus généralement, on peut capturer plusieurs blocs (qui seront numérotés\1
,\2
,\3
, ...), et qui peuvent éventuellement être imbriqués. - On ajoute
.*
en début et fin demotif
pour quesed
prenne bien toute la ligne et que\1
fasse ce qu'il est supposé faire.
-
-
remplacement
ne contient que\1
car c'est la seule partie qui nous intéresse.
Bonne chance