ハイフンを単語に置き換える方法

ハイフンを単語に置き換える方法

次のテキストがあります。

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

テキストを操作するときは、「1-93」の最初のハイフンは問題ありませんが、2番目のハイフンは問題を引き起こすハイフンか他の文字かわからないので、テキストの交換に必要です。この「-」は次のように終了します。

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、2番目はまったく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.

おすすめ記事