<1>を_1に変更

<1>を_1に変更

次のようなものを変更する必要があります

<1> to _1
<21> to _21

sed、awk、またはviを使用してそれらを自動化する方法はありますか?

注:山かっこ内の数字はさまざまです。

答え1

そしてsed

sed 's/<\([0-9]*\)>/_\1/g'

質問の例でこれを実行すると、

_1 to _1
_21 to _21

パターンは<\([0-9]*\)>内の数字と一致します<...>。代替テキストこのビット<...>入力をプレフィックス付きの数字(存在する場合)に置き換えます_


Viから:

:%s/<\([0-9]*\)>/_\1/g

sed明らかな歴史的理由から、これは解決策になります。


<21>Bashのシェル変数にこの文字列がある場合var

printf '%s\n' "_${var//[<>]/}"

これは_21変数置換を使用して印刷されます${parameter//pattern/string}


そしてtr。注:これ外観非常に限られた入力セットを処理します。発生場所に関係なく盲目的<に置き換えて_削除します。>

tr '<' '_' <file.in | tr -d '>'

これは真剣な解決策ではなく冗談に近い解決策ですが、働く入力に現れる唯一の合計が途中に数字がある場合<です。>

関連情報