Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 15/10/2008, à 22:34

thurston

[RESOLU] Script: short_name: "prenom nom" => "P. Nom "

Bonjour,

Je cherche depuis une heure sur le web comment remplacer élégamment un prenom nom, en P. Nom
Par exemple, si le script s'appelait short_name

short_name "lee ranaldo"
renverrait L. Ranaldo

Je suis quasi sur qu'il faut utiliser sed, mais je peine un peu (quasi débutant en bash)
Des suggestions?
D'avance merci
Thurston

Dernière modification par thurston (Le 16/10/2008, à 07:54)

Hors ligne

#2 Le 15/10/2008, à 22:50

morphoneo69

Re : [RESOLU] Script: short_name: "prenom nom" => "P. Nom "

Si ca peut t'apporter un début de reflexion :

 # echo "eddy deli" | sed s/eddy/e/
e deli

Hors ligne

#3 Le 15/10/2008, à 23:09

Didouuuuuuu

Re : [RESOLU] Script: short_name: "prenom nom" => "P. Nom "

C'est sur qu'avec sed, t'es pas rendu. Ne serait-ce que pour passer en upcase et tronquer le prénom.

Dans le même genre, as-tu pensé à ed ? C'est un éditeur ligne puissant.

Pour le faire en Bash, il faut aller regarder du côté des expansions de paramètre (Parameter Expansions). Tu le verras dans le man bash. Cela devrait trouver de quoi isoler le nom et le prénom.

Pour passer en capitale : tr '[:lower:]' '[:upper:]'

Tronquer ? Réponse : ${parameter:offset:length}

Sinon, si tu sais programmer en langage C ...

#4 Le 15/10/2008, à 23:13

thurston

Re : [RESOLU] Script: short_name: "prenom nom" => "P. Nom "

@ morphoneo69

Oui, ca j'utilise. Mais le problème c'est que j'intègre betement cette fonction dans la boucle suivante:
J'extraie le 1er mot (prénom), j'extraie la première lettre, la mets en majuscule et en remplace le premier mot du nom complet par le résultat, mais j'ai l'impression que c'est un peu lourd...Pas de commande magique dans sed qui ferait l'affaire? ou ne faut il pas rediriger plusieurs fois (plusieurs | ) pour arriver au résultat de façon un eu plus élégante?
A+
Merci
Thurston

Dernière modification par thurston (Le 15/10/2008, à 23:14)

Hors ligne

#5 Le 15/10/2008, à 23:28

Didouuuuuuu

Re : [RESOLU] Script: short_name: "prenom nom" => "P. Nom "

Tu as l'air de bien t'embêter.
Avec le chapître "Parameter expansion" du man de Bash, tu devrais trouver ce tu recherches.
Tiens un tuyau pour la route : pour supprimer les blancs en début et fin de chaîne de caractères (si besoin): VAR=`echo $VAR`

#6 Le 15/10/2008, à 23:31

Didouuuuuuu

Re : [RESOLU] Script: short_name: "prenom nom" => "P. Nom "

morphoneo69 a écrit :

Si ca peut t'apporter un début de reflexion :

 # echo "eddy deli" | sed s/eddy/e/
e deli

C'est pour rire ?

#7 Le 16/10/2008, à 04:12

frafa

Re : [RESOLU] Script: short_name: "prenom nom" => "P. Nom "

lo
pour les majuscules:
http://www.commentcamarche.net/faq/suje … -majuscule

VAR="lee ranaldo"
VAR2=$(echo -e "$VAR" | sed 's/^.\| [a-z]/\U&/g')
#le reste est à refaire en sed, moi je vais y passer 3 plombes, je passe la main :)
echo "$(echo $VAR2 | head -c1).$(echo $VAR2 |awk '{print $2}')"
#==> L.Ranaldo

Dernière modification par frafa (Le 16/10/2008, à 05:34)

Hors ligne

#8 Le 16/10/2008, à 06:12

shogun

Re : [RESOLU] Script: short_name: "prenom nom" => "P. Nom "

salut smile

echo "lee ranaldo" | sed -r 's/^(.).* (.)/\U\1. \2/'

#9 Le 16/10/2008, à 06:20

morphoneo69

Re : [RESOLU] Script: short_name: "prenom nom" => "P. Nom "

Didouuuuuuu a écrit :
morphoneo69 a écrit :

Si ca peut t'apporter un début de reflexion :

 # echo "eddy deli" | sed s/eddy/e/
e deli

C'est pour rire ?

Non

Sans sed on peut essayer quelquechose du genre :

#!/bin/bash

echo $1 
echo $2
i=${1:0:1}
t=$(echo $i |  tr '[:lower:]' '[:upper:]')
echo $t. $2

Dernière modification par morphoneo69 (Le 16/10/2008, à 06:50)

Hors ligne

#10 Le 16/10/2008, à 07:54

thurston

Re : [RESOLU] Script: short_name: "prenom nom" => "P. Nom "

@ shogun
Euh, ben c'est ce que je cherchais. Mais alors pour comprendre la fonction, bonjour. Adopté dans tous les cas!!!
Merci vraiment en tout cas à tous.
A+
Thurston

Hors ligne