Récupérer une chaine de caractère via GREP, AWK,SED, etc..
Résolu/Fermé
pcsystemd
Messages postés
700
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
29 juillet 2024
-
Modifié le 8 avril 2022 à 17:27
pcsystemd Messages postés 700 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 29 juillet 2024 - 3 mai 2022 à 08:16
pcsystemd Messages postés 700 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 29 juillet 2024 - 3 mai 2022 à 08:16
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
18752
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
3 octobre 2024
5 618
6 avril 2022 à 17:51
6 avril 2022 à 17:51
hello
$ awk -F "/" '{print $6}' fichier
825318531
dubcek
Messages postés
18752
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
3 octobre 2024
5 618
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
33316
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
14 octobre 2024
7 796
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
700
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
29 juillet 2024
23
3 mai 2022 à 08:16
3 mai 2022 à 08:16
Bonjour,
Merci a vous deux.
Merci a vous deux.