Upper Case de la premiere lettre

Résolu/Fermé
Poireau007 Messages postés 83 Date d'inscription jeudi 5 février 2009 Statut Membre Dernière intervention 17 octobre 2012 - 5 févr. 2009 à 10:10
Zyclo Messages postés 214 Date d'inscription jeudi 27 septembre 2007 Statut Membre Dernière intervention 28 août 2014 - 22 sept. 2011 à 14:15
Bonjour à tous,

Encore une qustion de noob desolé ^^

Je voudrais faire un upper case sur la premiere lettre de chaque ligne...
J'ai trouvé de la doc pour faire un upper case sur toute la ligne :
cat input | tr -t '[:lower:]' '[:upper:]' >! output 


ou un lower case sur toute la ligne :
cat input | tr -t '[:upper:]' '[:lower:]' >! output 


mais rien sur le premiere lettre...

PS: Il fonctionne l'outil rechercher du forum ???

5 réponses

Zyclo Messages postés 214 Date d'inscription jeudi 27 septembre 2007 Statut Membre Dernière intervention 28 août 2014 17
22 sept. 2011 à 14:15
et un bete sed 's/^./\u&/' ca devrait mettre la premiere lettre de la ligne en majuscule..
3
Poireau007 Messages postés 83 Date d'inscription jeudi 5 février 2009 Statut Membre Dernière intervention 17 octobre 2012 15
5 févr. 2009 à 12:32
ah ben non ca marche pô =) lol

bon ca ca fonctionne c'est sur !

$echo test | perl -pe 's/^(.{0})(.)/$1\U$2/;'


Le zéro correspond à la 1ere lettre, si on le remplace par un '1' c'est la 2eme lettre qui est en majuscule,
simpa !
2
dna.factory Messages postés 24956 Date d'inscription mercredi 18 avril 2007 Statut Modérateur Dernière intervention 25 avril 2024 1 609
5 févr. 2009 à 10:20
une solution de bourrin consisterait à
pour chaque ligne, la copier dans un fichier tampon
a partir de ce fichier utiliser deux awk, un pour extraire la premiere lettre, un pour extraire la seconde chacun redirigés vers d'autres fichiers tampons (je préfere les fichiers tampons au commandes pipées, au moins, on sait toujours exactement ce qu'on fait)
traiter le premier fichier avec un upper, et le second avec un lower si besoin
concatener les deux fichiers en une ligne
et rediriger cette ligne vers le fichier de destination

je l'ai dit, c'est une solution de bourrin, et je ne m'y connais pas assez pour te dire précisément quelles commandes utilisées
0
Poireau007 Messages postés 83 Date d'inscription jeudi 5 février 2009 Statut Membre Dernière intervention 17 octobre 2012 15
5 févr. 2009 à 10:39
Merci pour ta réponse dna.factory =)
En fait je n'ai pas trop compris ta méthode (ben oui je suis vraiment noob), je ne connais pas bien awk... je continue de chercher !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Poireau007 Messages postés 83 Date d'inscription jeudi 5 février 2009 Statut Membre Dernière intervention 17 octobre 2012 15
5 févr. 2009 à 11:42
J'ai la solution =)

awk '
BEGIN { upper = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
lower = "abcdefghijklmnopqrstuvwxyz"
}
{
FIRSTCHAR = substr($1, 1, 1)
if (CHAR = index(lower, FIRSTCHAR))
$1 = substr(upper, CHAR, 1) substr($1, 2)
print $0
}' monfichier.txt

voilou
0
dna.factory Messages postés 24956 Date d'inscription mercredi 18 avril 2007 Statut Modérateur Dernière intervention 25 avril 2024 1 609
5 févr. 2009 à 11:46
on n'est jamais aussi bien que par soi même
merci d'avoir indiqué la solution en tout cas
0