## (gH) -_- tripnv2.awk # on suppose qu'il y a plusieurs champs (mots) avec un point virgule comme séparateur # avant, c'est le prénom, après c'est le nom qu'on convertit en majuscules # on convertit le(s) prénom(s) avec une initiale majuscule, le reste en minuscules # on ignore les lignes vides # exemple d'utilisation : # gawk -f tripnv2.awk nomsprenoms3.txt | sort function initialeMajuscule( chaine ) { deb = toupper(substr(chaine,1,1)) fin = tolower(substr(chaine,2)) return deb fin } # fin de fonction initialeMajuscule /;/ { # début de traitement de chaque ligne non vide avec des points-virgules split($0,mots,";") nom = toupper(mots[2]) pren1 = mots[1] n = split(pren1,pren2," ") prenoms = "" for (p=1;p<=n;p++) { prenom = pren2[p] postiret = index(prenom,"-") if (postiret==0) { prenom = initialeMajuscule(prenom) } else { avant = substr(prenom,1,postiret) apres = substr(prenom,1+postiret) prenom = initialeMajuscule(avant) initialeMajuscule(apres) } # fin si sur postiret prenoms = prenoms prenom " " } # fin pour chaque prenom print sprintf("%-20s %-20s",nom,prenoms) } # fin de traitement