I have found a little bug in cut(i guess). See that: a=danilo echo $a | cut -c -5 # shows danil a=dánilo echo $a | cut -c 5 # shows dáni The option -b equal works. The cut is ignoring the letters with acentuation. I read in infopages this: `-c CHARACTER-LIST' `--characters=CHARACTER-LIST' Select for printing only the characters in positions listed in CHARACTER-LIST. The same as `-b' for now, but internationalization will change that. Tabs and backspaces are treated like any other character; they take up 1 character. If an output delimiter is specified, (see the description of `--output-delimiter'), then output that string between ranges of selected bytes. "The same as `-b' for now, but internationalization will change that.". Has not been changed? This is my locale: LANG=pt_BR.UTF-8 LANGUAGE=pt_BR:pt:en LC_CTYPE="pt_BR.UTF-8" LC_NUMERIC="pt_BR.UTF-8" LC_TIME="pt_BR.UTF-8" LC_COLLATE="pt_BR.UTF-8" LC_MONETARY="pt_BR.UTF-8" LC_MESSAGES="pt_BR.UTF-8" LC_PAPER="pt_BR.UTF-8" LC_NAME="pt_BR.UTF-8" LC_ADDRESS="pt_BR.UTF-8" LC_TELEPHONE="pt_BR.UTF-8" LC_MEASUREMENT="pt_BR.UTF-8" LC_IDENTIFICATION="pt_BR.UTF-8" LC_ALL= and the cut version is: cut (GNU coreutils) 7.4 Thanks, Danilo S. Morăes