GNU coreutils entendem UTF-8 em geral. Por exemplo, echo 哈哈 | wc -m
corretamente gera 3
em uma localidade UTF-8 (observe que a opção é -m
, não -c
, o que, por razões históricas, significa bytes).
Este é um bug em cut
. Olhando para a fonte de cut
, cut
em caracteres simplesmente não está implementado: a opção -c
é tratada como sinônimo de -b
.
Uma solução alternativa é usar o awk. O GNU awk lida bem com o UTF-8.
awk '{print substr($0,2,length)}'