Bash sed
pecom
Messages postés
33
Statut
Membre
-
zipe31 Messages postés 34620 Date d'inscription Statut Contributeur Dernière intervention -
zipe31 Messages postés 34620 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je me demandais s'il étais possible d'obtenir le résultat que je cherche avec la commande SED.
je lis un fichier ligne par ligne
lorsque je suis sur la ligne qui contient From:
alors j'ai 2 cas de possible
cas 1 : From: Paul <[email protected]>
cas 2 : From: ([email protected]) Toto
Dans les 2 cas, après traitement, je dois obtenir :
Paul:[email protected]
Toto:[email protected]
Alors j'espere que quelqun va pouvoir répondre à ma question ! merci !
Je me demandais s'il étais possible d'obtenir le résultat que je cherche avec la commande SED.
je lis un fichier ligne par ligne
lorsque je suis sur la ligne qui contient From:
alors j'ai 2 cas de possible
cas 1 : From: Paul <[email protected]>
cas 2 : From: ([email protected]) Toto
Dans les 2 cas, après traitement, je dois obtenir :
Paul:[email protected]
Toto:[email protected]
Alors j'espere que quelqun va pouvoir répondre à ma question ! merci !
A voir également:
- Sed -e bash
- É majuscule - Guide
- E-plans - Télécharger - CAO-DAO
- Bingo bash free - Télécharger - Divers Jeux
- E/s en série intel - Forum Carte graphique
- E exposant clavier ✓ - Forum Windows
3 réponses
personnellement, j'utiliserais en awk
(soit précédé d'un sed pour changer les ( en < et les > en ) ou inversement, soit avec de la conditionnelle)
(soit précédé d'un sed pour changer les ( en < et les > en ) ou inversement, soit avec de la conditionnelle)
Salut,
:-))
$ cat plop je lis un fichier ligne par ligne lorsque je suis sur la ligne qui contient From: alors j'ai 2 cas de possible From: Paul <[email protected]> From: ([email protected]) Toto $ cat fich.sed /^From/{ /</{ s/.*: \|>//g s/ </:/ } /(/{ s/.*(// s/\(.*\)) \(.*\)/\2:\1/ } } $ sed -f fich.sed plop je lis un fichier ligne par ligne lorsque je suis sur la ligne qui contient From: alors j'ai 2 cas de possible Paul:[email protected] Toto:[email protected] $
:-))
Contrainte d'ecole ...
Arf ;-(((
Plutôt que de t'expliquer, essaie de comprendre par toi même, ça te sera plus bénéfique, tout est dans la FAQ :
Sed - Introduction à SED - Part I
Sed - Introduction à SED - Part II
Sed - Introduction à SED - Part III
Arf ;-(((
Plutôt que de t'expliquer, essaie de comprendre par toi même, ça te sera plus bénéfique, tout est dans la FAQ :
Sed - Introduction à SED - Part I
Sed - Introduction à SED - Part II
Sed - Introduction à SED - Part III
hello
$ cat a1 Je lis un fichier ligne par ligne lorsque je suis sur la ligne qui contient From: alors j'ai 2 cas de possible From: Paul <[email protected]> From: ([email protected]) Toto $ $ awk -F"[<>:() ]" '/^From:.*\(/ {print $6 ":" $4 ; next} /^From.*</ {print $3 ":" $5 ; next} {print}' a1 Je lis un fichier ligne par ligne lorsque je suis sur la ligne qui contient From: alors j'ai 2 cas de possible Paul:[email protected] Toto:[email protected] $
effectivement
$ cat a1 Je lis un fichier ligne par ligne lorsque je suis sur la ligne qui contient From: alors j'ai 2 cas de possible From: Paul le poulpe <[email protected]> From: ([email protected]) Toto Cutugno $ $ awk -F"[<>:()]" '/^From:.*\(/ {gsub("^ | $", "",$4);print $4 ":" $3 ; next} /^From.*</ {gsub("^ | $", "", $2) ; print $2 ":" $3 ; next} {print}' a1 Je lis un fichier ligne par ligne lorsque je suis sur la ligne qui contient From: alors j'ai 2 cas de possible Paul le poulpe:[email protected] Toto Cutugno:[email protected]
on ne peut plus modifier ses posts ?
version optimisée
version optimisée
$ awk -F"[<>:()]" '/^From:/ {if($0 ~ "[(]"){c1=4 ; c2=3} else {c1=2 ; c2=3} ; gsub("^ | $", "",$c1);print $c1 ":" $c2 ; next} {print}' a1
Je lis un fichier ligne par ligne
lorsque je suis sur la ligne qui contient From:
alors j'ai 2 cas de possible
Paul le poulpe:[email protected]
Toto Cutugno:[email protected]
$
$