Explication Sed
EminoMeneko
Messages postés
2435
Date d'inscription
Statut
Membre
Dernière intervention
-
EminoMeneko Messages postés 2435 Date d'inscription Statut Membre Dernière intervention -
EminoMeneko Messages postés 2435 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
j'aimerais comprendre comment marche sed et pour ce faire j'ai lu le man et divers articles dont ceux-ci
https://forums.commentcamarche.net/forum/affich-37620084-sed-introduction-a-sed-part-i
J'utilise Cygwin en ce moment même mais j'ai Linux en natif également.
J'ai un fichier qui contient ceci
Je souhaitais par exemple afficher les lignes qui sont formatées xxxx-xxxx-xxxx-xxxx avec x un entier.
Pour ce faire j'ai pensé à ces lignes mais elles ne marchent pas. :(
Où se situe mon erreur ?
C'est bon j'ai compris fallait mettre les cottes.
Par contre ceci ne marche pas comme je le voulais
Merci de bien vouloir m'expliquer. :)
j'aimerais comprendre comment marche sed et pour ce faire j'ai lu le man et divers articles dont ceux-ci
https://forums.commentcamarche.net/forum/affich-37620084-sed-introduction-a-sed-part-i
J'utilise Cygwin en ce moment même mais j'ai Linux en natif également.
J'ai un fichier qui contient ceci
0000-0000-0000-0000 1234-1234-1234-1234 123-12-123-12-12345 123456789-123456789 12345-12345-1234567 12-12-12-12-12-12-1 1111111111111111111
Je souhaitais par exemple afficher les lignes qui sont formatées xxxx-xxxx-xxxx-xxxx avec x un entier.
Pour ce faire j'ai pensé à ces lignes mais elles ne marchent pas. :(
cat serials.txt | sed -n /[0-9]/p marche comme prévu cat serials.txt | sed -n /[0-9]*-/p marche comme prévu cat serials.txt | sed -n /\([0-9]\)/p # j'espérais avoir le même comportement que la première ligne mis à part que ce serait une sous-expression cat serials.txt | sed -n /[0-9]-\{3\}[0-9]/p ne retourne rien cat serials.txt | sed -n /\([0-9]\{4\}-\)\{3\}[0-9]\{4\}/p Ne renvoi rien non plus
Où se situe mon erreur ?
C'est bon j'ai compris fallait mettre les cottes.
Par contre ceci ne marche pas comme je le voulais
cat serials.txt | sed -n '/\([0-9]\{3,5\}-\)[0-9]*/p' Affiche 0000-0000-0000-0000 1234-1234-1234-1234 123-12-123-12-12345 123456789-123456789 <- Pourquoi cette ligne apparait malgré la ss-exp \([0-9]\{3,5\}-\) ? 12345-12345-1234567
Merci de bien vouloir m'expliquer. :)
Configuration: Dual boot Debian /XP Firefox toujours à jour, Opéra et IE (en cas de force majeure)
A voir également:
- Explication Sed
- Foyer netflix explication - Accueil - Guide streaming
- Paris multiple 2/6 explication ✓ - Forum Loisirs / Divertissements
- La blague des trois nains explication ✓ - Forum Loisirs / Divertissements
- Another earth explication fin - Forum Cinéma / Télé
- Chambre 1408 explication fin ✓ - Forum Cinéma / Télé
1 réponse
Salut,
123456789-123456789 <- Pourquoi cette ligne apparait malgré la ss-exp \([0-9]\{3,5\}-\) ?
Parce que la correspondance est avérée.
Ta sous-expression matche bien de 3 à 5 caractères numériques suivis d'un tiret :
123456789-123456789
Pour ne mettre en correspondance que la partie souhaitée, il faut utiliser les limites de mots " \<" et "\>" :
;-))
123456789-123456789 <- Pourquoi cette ligne apparait malgré la ss-exp \([0-9]\{3,5\}-\) ?
Parce que la correspondance est avérée.
Ta sous-expression matche bien de 3 à 5 caractères numériques suivis d'un tiret :
123456789-123456789
Pour ne mettre en correspondance que la partie souhaitée, il faut utiliser les limites de mots " \<" et "\>" :
sed -n '/\<\([0-9]\{3,5\}-\)[0-9]*/p'
;-))
On peut dire que la question est résolue mais je ne sais pas si je ne vais pas vouloir reposer des questions plus tard. (Alors pourquoi créer 15 topics sur Sed ?)