次のようなものを変更する必要があります
<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 '>'
これは真剣な解決策ではなく冗談に近い解決策ですが、働く入力に現れる唯一の合計が途中に数字がある場合<
です。>