BASH : Extraire nom utilisateur d'une @ mail
Résolu/Fermé
ponpon27
Messages postés
38
Date d'inscription
jeudi 11 octobre 2007
Statut
Membre
Dernière intervention
22 novembre 2010
-
26 oct. 2007 à 11:03
ponpon27 Messages postés 38 Date d'inscription jeudi 11 octobre 2007 Statut Membre Dernière intervention 22 novembre 2010 - 19 nov. 2007 à 16:16
ponpon27 Messages postés 38 Date d'inscription jeudi 11 octobre 2007 Statut Membre Dernière intervention 22 novembre 2010 - 19 nov. 2007 à 16:16
A voir également:
- BASH : Extraire nom utilisateur d'une @ mail
- Bash permission non accordée - Forum Shell
- Bash écrire dans un fichier - Forum Shell
- Bingo bash free - Télécharger - Divers Jeux
- Bash path - Astuces et Solutions
- Bash: adduser : commande introuvable ✓ - Forum Debian
17 réponses
asevere
Messages postés
13084
Date d'inscription
lundi 28 janvier 2002
Statut
Webmaster
Dernière intervention
3 février 2022
426
26 oct. 2007 à 11:27
26 oct. 2007 à 11:27
Bonjour,
Tu peux utiliser sed pour faire ce genre de manipulation.
Tu peux utiliser sed pour faire ce genre de manipulation.
sed -n '/!XYZ/s/\(.*\)@.*/\1/p' toto -n => Ne rien afficher /!XYZ/ => Ne traiter que les lignes ne contenant pas "XYZ" s/1/2/ => Substitution de 1 par 2 \(.*\)@.* => Indique une chaine du type text1@text2 on enregistre text1 (grace aux parenthèses) \1 => correspond au texte enregistré par la (première) paire de parenthèsesJette un oeil au manuel (man sed) pour plus d'informations! :)
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
26 oct. 2007 à 14:52
26 oct. 2007 à 14:52
Salut,
essaie comme ça alors :
essaie comme ça alors :
jp@MDK:~/tmpfs ssh$ cat plop arnaud.dupont@mondomaine.fr pierreXYZ.martin@mondomaine.fr jp@MDK:~/tmpfs ssh$ sed -e '/@/!d;{/XYZ/d; s/\(.*\)@.*/\1/}' plop arnaud.dupont jp@MDK:~/tmpfs ssh$;-))
ponpon27
Messages postés
38
Date d'inscription
jeudi 11 octobre 2007
Statut
Membre
Dernière intervention
22 novembre 2010
1
26 oct. 2007 à 13:40
26 oct. 2007 à 13:40
Rapide, concis, detaillé et expliqué!! merci bcp de ton aide
ponpon27
Messages postés
38
Date d'inscription
jeudi 11 octobre 2007
Statut
Membre
Dernière intervention
22 novembre 2010
1
26 oct. 2007 à 14:35
26 oct. 2007 à 14:35
arff , fonctionne pas...
exmple pour mon fichier toto, il pourrait contenir:
arnaud.dupont@mondomaine.fr
pierreXYZ.martin@mondomaine.fr
j'aimerais avoir le rsultat suivant a l'ecran:
arnaud.dupont
lon enleve ce qu'il y a a partir de l'@ de dupont et la 2eme adresse n'est pas traitée puisqu'elle contient la chaine XYZ
exmple pour mon fichier toto, il pourrait contenir:
arnaud.dupont@mondomaine.fr
pierreXYZ.martin@mondomaine.fr
j'aimerais avoir le rsultat suivant a l'ecran:
arnaud.dupont
lon enleve ce qu'il y a a partir de l'@ de dupont et la 2eme adresse n'est pas traitée puisqu'elle contient la chaine XYZ
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
ponpon27
Messages postés
38
Date d'inscription
jeudi 11 octobre 2007
Statut
Membre
Dernière intervention
22 novembre 2010
1
26 oct. 2007 à 15:00
26 oct. 2007 à 15:00
Genial ca marche! pourrias tu , a la maniere de asevere , expliquer un peu les differente etapes de cette comande stp?
avec la 1ere solution proposée, j'ai deja bcp bcp progréssé, et merci dailleur asevere,, et la je crois qu'i y a moyen que je progresse encore!! lol
merci a vous deux
avec la 1ere solution proposée, j'ai deja bcp bcp progréssé, et merci dailleur asevere,, et la je crois qu'i y a moyen que je progresse encore!! lol
merci a vous deux
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
26 oct. 2007 à 15:15
26 oct. 2007 à 15:15
sed -e # pour enchainer plusieurs commandes à la suite ' /@/!d # si les lignes ne contiennent pas d'@ les effacer ; # séparateur de commandes { # groupement de commande à appliquer aux lignes contenant un @ /XYZ/d # si les lignes contiennent "XYZ" les effacer ; # séparateur de commandes s/\(.*\)@.*/\1/ # on récupère tout ce qui se trouve avant le @ et on substitue #+ la ligne par lui même, le " \1" } # fin du groupement de commandes '
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
26 oct. 2007 à 15:03
26 oct. 2007 à 15:03
Re-
J'y pense, si les adresses se trouvent sur une seule ligne (une adresse par ligne) et toutes en début de ligne, un simple :
J'y pense, si les adresses se trouvent sur une seule ligne (une adresse par ligne) et toutes en début de ligne, un simple :
grep -o '.*@' plop | grep -v 'XYZ'devrait suffire ;-))
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
26 oct. 2007 à 15:04
26 oct. 2007 à 15:04
Salut,
ou un coup de grep | sed
pas besoin de capturer le nom, ça suffit de supprimer à partir de @
ou un coup de grep | sed
grep -v XYZ fichier | sed -n 's/@.*//p'
pas besoin de capturer le nom, ça suffit de supprimer à partir de @
asevere
Messages postés
13084
Date d'inscription
lundi 28 janvier 2002
Statut
Webmaster
Dernière intervention
3 février 2022
426
26 oct. 2007 à 15:08
26 oct. 2007 à 15:08
arg, autant pour moi, par fleme, je n'ai testé que sur une variable contenant XYZ et un autre ne contenant pas XYZ, en effet le résultat sur un fichier n'est pas correcte du tout...
@+
@+
asevere
Messages postés
13084
Date d'inscription
lundi 28 janvier 2002
Statut
Webmaster
Dernière intervention
3 février 2022
426
26 oct. 2007 à 15:14
26 oct. 2007 à 15:14
Bonche,
Bah pour m'excuser d'avoir bourdé...
Bah pour m'excuser d'avoir bourdé...
awk 'BEGIN { FS = "@" } !/XYZ/{print $1}' toto BEGIN => L'instruction suivante ne sera jouée que la première fois { FS = "@" } => Le separateur de champ est l'@ !/XYZ/ => Recherche les lignes ne contenant pas (!) le motif XYZ { print $1 } => Affiche le champ 1Comme quoi, le solution sont multiples! :o)
ponpon27
Messages postés
38
Date d'inscription
jeudi 11 octobre 2007
Statut
Membre
Dernière intervention
22 novembre 2010
1
26 oct. 2007 à 15:20
26 oct. 2007 à 15:20
et si je veux supprimer les lignes content cette fois non plus XYZ mais un caractere numerique je remplace XYZ par [0-9] ?
asevere
Messages postés
13084
Date d'inscription
lundi 28 janvier 2002
Statut
Webmaster
Dernière intervention
3 février 2022
426
26 oct. 2007 à 15:22
26 oct. 2007 à 15:22
Yop, tout juste :)
ponpon27
Messages postés
38
Date d'inscription
jeudi 11 octobre 2007
Statut
Membre
Dernière intervention
22 novembre 2010
1
26 oct. 2007 à 15:26
26 oct. 2007 à 15:26
superbe boulot jipicy!! merci, c'est limpique comme explication
ponpon27
Messages postés
38
Date d'inscription
jeudi 11 octobre 2007
Statut
Membre
Dernière intervention
22 novembre 2010
1
26 oct. 2007 à 15:27
26 oct. 2007 à 15:27
merci asevere...super sympa
TKouder
Messages postés
5
Date d'inscription
mercredi 26 septembre 2007
Statut
Membre
Dernière intervention
26 octobre 2007
1
26 oct. 2007 à 18:26
26 oct. 2007 à 18:26
Bonjour,
voici une réponse d'un débutant comme moi mais ca marche et pas trop compliquée
cut -d '@' -f 1 toto | grep -v XYZ
voici une réponse d'un débutant comme moi mais ca marche et pas trop compliquée
cut -d '@' -f 1 toto | grep -v XYZ
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
26 oct. 2007 à 21:03
26 oct. 2007 à 21:03
Salut,
comme asevere l'a déjà dit Comme quoi, le solution sont multiples! :o)
voici avec perl
comme asevere l'a déjà dit Comme quoi, le solution sont multiples! :o)
voici avec perl
perl -ne '/XYZ/?0:s/@.*// and print' toto perl -ne 'next if /XYZ/;print if s/@.*//' toto
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
26 oct. 2007 à 21:23
26 oct. 2007 à 21:23
Tout compte fait avec "sed" un simple :
sed -n '/XYZ/! s/@.*//p' plopsuffisait largement ;-))
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
26 oct. 2007 à 21:24
26 oct. 2007 à 21:24
suffisait largement ;-))
Of, course ;-)
je n'ai dit pas le contraire ;-))
Of, course ;-)
je n'ai dit pas le contraire ;-))
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
>
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
26 oct. 2007 à 21:25
26 oct. 2007 à 21:25
je n'ai dit pas le contraire ;-))
J'ai jamais dit ça non plus, bien au contraire ;-))
J'ai jamais dit ça non plus, bien au contraire ;-))
ponpon27
Messages postés
38
Date d'inscription
jeudi 11 octobre 2007
Statut
Membre
Dernière intervention
22 novembre 2010
1
19 nov. 2007 à 16:16
19 nov. 2007 à 16:16
merci a tous, cela marche bien!