Récupérer une chaine de caractère via GREP, AWK,SED, etc..
Résolu/Fermé
pcsystemd
Messages postés
702
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
6 novembre 2024
-
Modifié le 8 avril 2022 à 17:27
pcsystemd Messages postés 702 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 6 novembre 2024 - 3 mai 2022 à 08:16
pcsystemd Messages postés 702 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 6 novembre 2024 - 3 mai 2022 à 08:16
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
- Caractere speciaux - Guide
- Caractère spéciaux - Guide
- Caractère ascii - Guide
- Caractere speciaux mac - Guide
- Caractère invisible - Forum Windows
4 réponses
dubcek
Messages postés
18758
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
24 décembre 2024
5 623
6 avril 2022 à 17:51
6 avril 2022 à 17:51
hello
$ awk -F "/" '{print $6}' fichier
825318531
dubcek
Messages postés
18758
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
24 décembre 2024
5 623
Modifié le 7 avril 2022 à 12:52
Modifié le 7 avril 2022 à 12:52
$ grep -oP '(?<=/)\d+(?=/)' fichier | head -1
825318531
mamiemando
Messages postés
33459
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
8 janvier 2025
7 813
Modifié le 8 avril 2022 à 17:39
Modifié le 8 avril 2022 à 17:39
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
pcsystemd
Messages postés
702
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
6 novembre 2024
23
3 mai 2022 à 08:16
3 mai 2022 à 08:16
Bonjour,
Merci a vous deux.
Merci a vous deux.