awk正規表現はすべての数字を「」に置き換えますが、角かっこの間の数字は変更しません。

awk正規表現はすべての数字を「」に置き換えますが、角かっこの間の数字は変更しません。
  • 入力ディスプレイ:(TJ)-8.5(o12)-3.2(p1)-15.3(ik)-1.2(1)

  • 結果は次のようになります。(TJ)-.(o12)-.(p1)-.(ik)-.(1)

  • 括弧内に含まれるすべての数字の数字は置き換えてはいけませんが、すべての数字の他のすべての数字は置き換えることができます。

答え1

GNUの使用awk:

gawk '{print gensub(/(\([^)]*\))|[0123456789]+/, "\\1", "g")}'

デフォルトでは、次のように翻訳されますsed

sed -E 's/(\([^)]*\))|[0123456789]+/\1/g'

答え2

複数文字RSにGNU awkを使用する:

$ echo '(TJ)-8.5(o12)-3.2(p1)-15.3(ik)-1.2(1)' |
    awk -v RS='[(][^)]+)' '{gsub(/[0-9]/,""); printf "%s%s", $0, RT}'
(TJ)-.(o12)-.(p1)-.(ik)-.(1)

関連情報