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
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 Clavier
4 réponses
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
6 avril 2022 à 17:51
6 avril 2022 à 17:51
hello
$ awk -F "/" '{print $6}' fichier
825318531
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
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
33401
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
28 novembre 2024
7 804
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.