Explication Sed
EminoMeneko
Messages postés
2499
Statut
Membre
-
EminoMeneko Messages postés 2499 Statut Membre -
EminoMeneko Messages postés 2499 Statut Membre -
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)
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 "\>" :sed -n '/\<\([0-9]\{3,5\}-\)[0-9]*/p'
;-))