Rechercher : dans
Par :

Script sh décomposer nom prénom

Dernière réponse le 4 mai 2005 à 23:15:36 seboost, le 4 mai 2005 à 16:01:40 
 Signaler ce message aux modérateurs

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

Meilleures réponses pour « script sh décomposer nom prénom » dans :
Exécuter un script shell VoirExécution d'un script Pour pouvoir exécuter un script ou un programme en ligne de commande il y a plusieurs possibilités : 1. Le chemin absolu 2. Le chemin relatif 3. Modifier la variable PATH Note: Le Sha...
Bash - Les paramètres VoirIntroduction Les paramètres positionnels Exemple 1 Les paramètres spéciaux Exemple 2 Initialiser des paramètres - La commande "set" - Exemples - La commande "shift" - Exemple 3 Introduction Il est possible de fournir à un script,...
Créer rapidement un planning de congés simple [Excel] VoirA1 : Saisir Congés 2008 A2 : Saisir NOM Prénom A3 à Ax : Saisir le nom des x personnes à gérer B1 : Saisir 01/05/08 ; Format/Cellule/Nombre/Personnalisé/Type jjj B2 : Saisir =B1 ; Format/Cellule/Nombre/Personnalisé/Type jj mmm ...

1

[Dal], le 4 mai 2005 à 17:57:47

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

Répondre à [Dal]

2

jipicy, le 4 mai 2005 à 20:04:38

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" ;-))
;-)) Z'@+...che.
JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé. 

Répondre à jipicy

3

jipicy, le 4 mai 2005 à 23:01:53

Si tu veux continuer avec "sed", tu peux essayer ça :

echo $i | cut -d : -f 5 | sed 's/^\(....\)\(.*\)$/\2.\1/'
;-)) Z'@+...che.
JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé. 

Répondre à jipicy

4

 jipicy, le 4 mai 2005 à 23:15:36

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/'
;-)) Z'@+...che.
JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé. 

Répondre à jipicy