パターンから行を選択し、変更ごとに新しい行と増分番号に置き換えます。

パターンから行を選択し、変更ごとに新しい行と増分番号に置き換えます。

こんにちは、私はパターン/単語文字列からテキストファイルの1行を選択し、その行を新しいテキストに置き換え、各行の変更に対して数字を増やす方法を理解しようとしています。

sedを使用する予定ですが、各行の変更に対して増加する数値を実装する方法がわかりません。

目標の前後:

前のテキスト:

">text_1_lots of other bits of text"   
other lines of text   
">text_2_lots of other bits of text"    
other lines of text   
">text_3_lots of other bits of text"   
other lines of text  

次のテキスト:

">text_1"   
other lines of text   
">text_2"    
other lines of text   
">text_3"   
other lines of text  

これが私が今まで持っているものです:

sed -i "s/>text_*/>text_[0-n]/g"   

[0-n]そして、ワイルドカードは*私がやりたいことを示し、これを達成するために考えることができる最も近いものなので、これがうまくいかないことを知っています(たとえこれが本質的に疑似コードであることを知っていますが)。

ベストアンサー1

perlsedこれは、代替インデックスの直接評価と似ていますが、許可する構文を使用して実行できます。

perl -pe 's/>text_.*/sprintf "text_%d", ++$n/pe' file

また、見ることができます文字列を順次インデックスに置き換える

しかし、あなたの場合、テキストにはすでに番号が付けられているので、不要な部分をキャプチャして再交換して切り取るのは簡単です。

sed -E 's/(>text_[0-9]+).*/\1/' file

おすすめ記事