Você não disse qual cut
você está usando, mas desde que você mencionou a opção longa do GNU --characters
, eu assumirei que é essa. Nesse caso, observe esta passagem de info coreutils 'cut invocation'
:
‘-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.
(ênfase adicionada)
No momento, o GNU cut
sempre funciona em termos de "caracteres" de byte único, então o comportamento que você vê é esperado.
Suportar ambas as opções -b
e -c
é exigido pelo POSIX - elas não foram adicionados ao GNU cut
porque tinham suporte multi-byte e funcionavam corretamente, mas para evitar erros na entrada compatível com POSIX. O mesmo -c
foi feito em algumas outras implementações cut
, embora não seja FreeBSD e OS X pelo menos.
Este é o comportamento histórico de -c
. -b
foi adicionado recentemente para assumir a função de byte, de modo que -c
possa funcionar com caracteres de múltiplos bytes. Talvez daqui a alguns anos funcione como desejado de forma consistente, embora o progresso não tenha sido exatamente rápido (já faz mais de uma década). O GNU cut
nem sequer implementa a opção -n
ainda, embora seja ortogonal e destinado a ajudar na transição. Existem potenciais problemas de compatibilidade com scripts antigos, o que pode ser uma preocupação, embora eu não saiba de forma definitiva qual é o motivo.