Script sh décomposer nom prénom

seboost -  
jipicy Messages postés 41342 Statut Modérateur -
Bonjour j'essay de faire un petit script pour linux. Je récupére la liste de mes utilisateurs sur le domaine windows (getent passwd). Le retour de cette commande est comme ceci:
pseudo:x:10002:10000:nom prenom:/home/pseudo:/bin/bash
a partir de cette liste je voudrait récupérer le nom et le prénom et les assemblés pour créer une adresse mail.
voici le début de mon script:

#!/bin/sh

# Creation of the mail

MAILLING=/home/mailling.abook
USER=`getent passwd`

for i in $USER; do
wNAME=`echo $i | cut -d : -f 5`

if [ $wUID -gt 9999 ]; then
# Enter the mail
printf "prenom.nom@domain.com," >> $MAILLING
fi
done

Et donc dans le printf je voudrais qu'a partir de wNAME il y a prenom.nom
merci pour votre aide

4 réponses

[Dal] Messages postés 6373 Statut Contributeur 1 106
 
Salut seboost,

Avec "sed", par exemple :

wNAME=`echo $i | cut -d : -f 5 | sed 's/ /\./g`

ou avec "tr" :

wNAME=`echo $i | cut -d : -f 5 | tr " " "."`

L'un ou l'autre remplace l'espace (s'il s'y trouve) par un point (et autant de fois qu'il y a un espace). Si tu veux remplacer un espace et un seul, utilise "sed" en retirant le "g" de la fin de commande.


Dal
0
jipicy Messages postés 41342 Statut Modérateur 4 896
 
Salut,

Tu peux aussi essayer ça :
wNAME=`echo $i |cut -d : -f 5 | awk -F" " '{ print $2"."$1 }'`
[Dal] => C'était juste parce qu'il voulait inverser l'ordre "prénom <=> nom".
Pssst =>> Il manque une "quote" (fermante) à l'expression avec "sed" ;-))
;-))
0
jipicy Messages postés 41342 Statut Modérateur 4 896
 
Si tu veux continuer avec "sed", tu peux essayer ça :
echo $i | cut -d : -f 5 | sed 's/^\(....\)\(.*\)$/\2.\1/'
;-))
0
jipicy Messages postés 41342 Statut Modérateur 4 896
 
Petite rectification, la solution précédente ne marchant pas à tous les coups (noms différents) :
echo $i | cut -d : -f 5 | sed 's/^\(.*[ ]\)\(.*\)/\2.\1/'
;-))
0