하이픈을 단어로 바꾸는 방법

하이픈을 단어로 바꾸는 방법

다음 텍스트가 있습니다.

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

텍스트 작업을 할 때 "1-93"에 있는 첫 번째 하이픈은 괜찮지만 두 번째 하이픈은 문제를 일으키는 하이픈인지 다른 문자인지 잘 모르겠으므로 텍스트 교체에 필요합니다. 이 "-"는 다음과 같이 끝납니다.

84에서 93으로 변경되었습니다. 이를 수행하는 방법을 알려주십시오.

답변1

언제든지 octaldump( )와 같은 도구를 사용하거나 od특정 hexdump문자의 ASCII 코드를 확인할 수 있습니다.

$ 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

따라서 첫 번째 -는 ASCII 코드 2d이고 두 번째는 전혀 ASCII 코드가 아닙니다. 그래서 대시는 분명히 다릅니다. 실제로는 UTF-8 문자 0xe28093, EN-DASH 입니다 . (감사해요@kathy이것을 명확히 하기 위해! )

이와 같이 문자열의 문자를 바꾸려면 다음 중 하나를 사용하거나 sed문자열을 변수에 넣은 다음 문자열에서 문자를 검색하고 바꿀 수 있습니다.

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.
세게 때리다
$ var='Since the 1-93 fragment contains additional\nresidues 84–93.'
$ echo -e ${var/–/-}
Since the 1-93 fragment contains additional
residues 84-93.

답변2

당신은 그것을 사용할 수 있습니다 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.

여러 파일을 제자리에서 편집하려면 GNU를 사용합니다 sed. 다음을 수행할 수 있습니다.

sed -i 's/–/ to /g' ./*.txt

관련 정보