Os caracteres M-BM- são uma representação ASCII da sequência de bytes 0xc2 0xa0 , que é a codificação UTF8 do caractere unicode A0 - um caractere de espaço sem quebra. Este caractere pode ser inserido nos documentos do LibreOffice e do Microsoft Word usando a seqüência de teclas Ctrl + Deslocamento + ESPAÇO .
Por exemplo, se criarmos um novo documento .odt no LibreOffice e digitar ABC Ctrl + Deslocar + ESPAÇO DEF, então Save As... Text (ignorando o aviso de que o documento pode conter recursos que não podem ser salvos nesse formato), então visualize o arquivo .txt resultante com cat :
$ cat nbsp.txt
ABC DEF
e novamente com a opção -v para mostrar caracteres não imprimíveis
$ cat -v nbsp.txt
M-oM-;M-?ABCM-BM- DEF
Tenha em atenção que também obtemos uma sequência inicial M-oM-;M-? ou hexadecimal 0xef 0xbb 0xbf , que é a UTF8 marca de encomenda de bytes (BOM) consistente com o tipo de arquivo informado pelo comando file , por exemplo
$ file nbsp.txt
nbsp.txt: UTF-8 Unicode (with BOM) text
Usando od para imprimir os valores hexadecimais em ordem de bytes,
$ od -tx1 nbsp.txt
0000000 ef bb bf 41 42 43 c2 a0 44 45 46 0a
0000014
É possível manipular esses caracteres usando ferramentas padrão como sed ou tr , especificando os códigos hexadecimais como sequências de escape, por exemplo. para substituir o espaço sem quebra por um espaço ASCII simples
$ sed 's/\xc2\xa0/ /g' nbsp.txt
ABC DEF
Verificar novamente com od confirma a substituição por um espaço ASCII comum 0x20 (decimal 32)
$ sed 's/\xc2\xa0/ /g' nbsp.txt | od -tx1
0000000 ef bb bf 41 42 43 20 44 45 46 0a
0000013
No gnome-terminal (e talvez outros emuladores de terminal compatíveis com UTF8), também é possível inserir o valor do ponto de código unicode diretamente usando a seqüência de teclas Ctrl + < kbd> Shift + u seguido por um valor hexadecimal e depois pela tecla Enter - a sequência aparece inicialmente como u̲.̲.̲.̲ mas depois o caractere deve compor quando você apertar Enter eg para a mesma substituição de espaço sem quebra que podemos fazer
$ sed 's/Ctrl+Shift+ua0
exibido como
$ sed 's/̲/̲u̲a̲0̲
e, em seguida, conclui como
$ sed 's/ / /g' nbsp.txt
ABC DEF
Usando cat -v , podemos confirmar que a sequência M-BM- se tornou um espaço comum
$ sed 's/ / /g' nbsp.txt | cat -v
M-oM-;M-?ABC DEF
Você pode querer ver conversores de codificação mais genéricos como iconv e uconv também.