Um pouco mais simples, ainda com sed:

$ cat xyz | sed -r 's/\b[a-z]+/\u&/g'
Alfredo Morto
Alberto Roberto
Macaco Malandro Balh Ble
Tatu Preguicoso
Prego Batido
Urangotango Chines

\b == border (inicio de linha, espaço, tab ... essas coisa)
\u == uppercase
&  == a regex que foi casada no primeiro campo...

Ou seja:
Case border+letra minuscula, imprima em uppercase o que foi casado.


Sorte,

Flávio do Carmo Junior aka waKKu
#bash-br @ irc.freenode.net

2008/4/4 voyeg3r <[EMAIL PROTECTED]>:
>
>
>
>
>
>
> Só para constar. A mesma solução usando o vim, para casos em que
>  você só tenha o vim seria assim:
>
>  # abrir todos os arquivos
>  vim *.txt
>
>  # disparar o comando bufdo
>
>  :bufdo :%s/^./\U&/g | :wall
>
>  # dar alguns enteres confirmando e finalmente digitar
>  :qall
>
>  --- Em [email protected], "Ivan lopes"
>  <[EMAIL PROTECTED]> escreveu
>  >
>  > cat xyz | sed 's/\(^\)\?\([^ ]*\)/\u&/g'
>  > Alfredo
>  > Alberto
>  > Macaco
>  > Tatu
>  > Prego
>  > Urangotango
>  > Cesar Eduardo Motta Vianna
>  >
>
>  

Responder a