次のテキストがあります。
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
文字列を変数に入れて文字列から文字を検索して置き換えることができます。
$ 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