<>で囲まれた各数字を削除する方法

<>で囲まれた各数字を削除する方法

私はこれを試しました

sed -i '' 's/[0-9]*<>/g'

しかし、それはうまくいきませんでした。

サンプルファイル:

<Number1>
</Number8>

出力:

<Number>
</Number>

ベストアンサー1

実際にやってみると本当に簡単ですsed。一度にできるだけ多くを取得し、再びtry、tryを実行します。

sed -e :t -e 's/\(<[^<]*\)[0-9]\{1,\}\([^>]*>\)/\1\2/g;tt'

次のランダム入力ビットを試してみました。

<Number1>
234234 </Nu994845mb6er8>'
234234 <000000000000000000000000000000000000>>
<a1> 2 <34b5c> 6 7 def

結果:

<Number>
234234 </Number>
234234 <>>
<a> 2 <bc> 6 7 def

<正規表現は、aとaの間の1つ以上の数字に一致します>。正常に実行できなくなるまで、一連の数字を別のものに置き換えます。これがestコマンドの目的ですt

そうでなければできますいいえ次のループ:

sed 's/^/>/;s/\(>[^<>]*\)*[0-9]*/\1/g;s/.//' <<\INPUT        
<Number1>
234234 </Nu994845mb6er8>'
234234 <000000000000000000000000000000000000>>
<a1> 2 <34b5c> 6 7 def
INPUT

出力

<Number>
234234 </Number>'
234234 <>>
<a> 2 <bc> 6 7 def

>見つかるまで常に1つはスキップされるため、グループ<にのみ影響します<[^<>]*>。バラよりこれ興味があれば理由を知りたいです。

おすすめ記事