Você sempre pode usar uma ferramenta como o octal dump ( od
) ou hexdump
para confirmar o código ASCII de um determinado caractere.
Exemplo
$ echo 'Since the 1-93 fragment contains additional
residues 84–93.' | hexdump -C
00000000 53 69 6e 63 65 20 74 68 65 20 31 2d 39 33 20 66 |Since the 1-93 f|
00000010 72 61 67 6d 65 6e 74 20 63 6f 6e 74 61 69 6e 73 |ragment contains|
00000020 20 61 64 64 69 74 69 6f 6e 61 6c 0a 72 65 73 69 | additional.resi|
00000030 64 75 65 73 20 38 34 e2 80 93 39 33 2e 0a |dues 84...93..|
0000003e
Portanto, o primeiro -
é o código ASCII 2d
, enquanto o segundo –
não é um código ASCII. Então os traços são claramente diferentes. Na verdade, é um caractere UTF-8 0xe28093
, um EN-DASH. (Obrigado a @casey por esclarecer isso!)
Para substituir um caractere em uma string como essa, você pode usar sed
ou colocar a string em uma variável e fazer uma pesquisa e substituir a string por esse caractere.
$ var='Since the 1-93 fragment contains additional\nresidues 84–93.'
$ echo -e $var | sed 's/–/-/g'
Since the 1-93 fragment contains additional
residues 84-93.
bash
$ var='Since the 1-93 fragment contains additional\nresidues 84–93.'
$ echo -e ${var/–/-}
Since the 1-93 fragment contains additional
residues 84-93.