script de mayúscula a minúscula respetando una mayúscula
Publicado: 3 Septiembre, 2009 - 21:19 script de mayúscula a minúscula respetando una mayúscula
Hola, estoy elaborando un script, que entre otras cosas, Me gustaría que hiciese lo siguiente.
Imaginen que tengo un archivo de texto plano lleno de nombres y apellidos
PEPITO DE LOS PALOTES PALOTES MARÍA DE LA CUEVA ARSENIO DE LAS CUMBRES...
Todo en mayúsculas, me gustaría saber algun comando que "Modifique todas las mayúscula a minúsculas pero que respete "la primera letra de cada palabra" y la deje en mayúscula", es decir:
Pepito De Los Palotes Palotes....
Bueno, si además el script detectase constantes como "DE LA" o "DEL" o "DE LOS" y ahí actuáse cambiando todo a minúscula mejor, pero no es imprescindible.
Muchas gracias.
- Inicie sesión o regístrese para enviar comentarios
- 1996 lecturas


es relativamente fácil hacerlo en cualquier lenguaje que te manejes, ese script en php no supondría un problema para mi, pero cada cual que utilice el lenguaje que más acorde le sea
simplemente es dividir la cadena en partes por el espacio e ir poniendo a mayúscula la primera letra de esas cadenas.
qué lenguaje prefieres?
¿Y cuál es la pregunta en sí?
gracias por la respuesta MinistroPepón.
Preferiblemente que fuese en bash.
con tr puedo pasar de mayúscula a minúscula todo el texto, pero no se me ocurre como respetar que la primera letra de cada palabra siga siendo mayúscula.
En bash ahora mismo no sabría aconsejarte, tendrás que mirar algún manual
Creo que aquí hay una aproximación casi valida en AWK. Decidí prudente dejar en minuscula todas las palabras con menos de tres letras que no sean la primera del texto.
echo "ES PEPITO DE LOS PALOTES PALOTES MARÍA DE LA CUEVA ARSENIO DE LAS CUMBRES..." | awk '{$0 = tolower($0); for (i=1; i<=NF; i++) if (length($i) < 4 && i > 1) printf "%s ", $i; else printf "%s ", toupper(substr($i, 1, 1)) substr($i, 2); print ""}'Lo correcto sería cargar, en una lista, todos los artículos y capitalizar solo las palabras que no estén en ella (sucede que hay nombres propios de menos de cuatro letras). Pero esa es otra historia y debe ser contada en otra ocación.
Muchas Gracias Point to null. Bendito awk.