Récupérer une chaine de caractère via GREP, AWK,SED, etc..
Résolu
pcsystemd
Messages postés
702
Date d'inscription
Statut
Membre
Dernière intervention
-
pcsystemd Messages postés 702 Date d'inscription Statut Membre Dernière intervention -
pcsystemd Messages postés 702 Date d'inscription Statut Membre Dernière intervention -
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
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
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 vide - 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