Existem espaços em branco (como U + 00A0 no espaço sem quebra) ou caracteres invisíveis (como backspace ou U + 200B) que não são classificados como [:blank:]
ou mesmo [:space:]
em algumas localidades.
Em teoria, você deve ser capaz de aparar todos os caracteres não gráficos com:
sed 's/^[^[:graph:]]*//;s/[^[:graph:]]*$//'
Mas novamente em algumas localidades em alguns sistemas que não funcionam para U + 00A0.
perl -Mopen=locale -lpe 's/^\P{Graph}+|\P{Graph}+$//'
Funciona para sua U + 00A0, mas não para U + 200B
Você também pode adicionar esses caracteres individualmente por você mesmo. Usando a expansão $'\u....'
do tipo zsh (também suportada por versões recentes do bash e algumas outras shells):
trim=$'[[:space:][:cntrl:]\u00a0\u200b]*'
sed "s/^$trim//;s/$trim\$//"