Como substituir um hífen por uma palavra

2

Eu tenho o seguinte texto:

Since the 1-93 fragment contains additional
residues 84–93.

O primeiro hypen encontrado em "1-93" é bom quando eu processar o texto, mas o segundo, não tenho certeza se é um hypen ou outro caractere que causou meus problemas, então eu preciso substituir este "-" em texto assim no final para obter:

84 a 93 em vez disso. Por favor, como fazer isso.

    
por user2957777 20.03.2014 / 05:39

2 respostas

2

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.

sed
$ 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.
    
por 20.03.2014 / 06:41
1

Você pode usar sed :

$ echo "Since the 1-93 fragment contains additional
> residues 84–93." | sed 's/–/ to /g'

Since the 1-93 fragment contains additional
residues 84 to 93.

Para editar vários arquivos no local, usamos o GNU sed , você pode fazer:

sed -i 's/–/ to /g' ./*.txt
    
por 20.03.2014 / 05:48