ruby を使用して、gsub() で反復値を生成しようとしています。私が書いた行は次のとおりです。
ruby -pe '$i=0; gsub(/⎦\d+?⎡/, "⎦#{$i+=1}⎡")' < test.txt
しかし、それは実際には反復を行いません。代わりに、値$i
をゼロに設定し、置換が行われるたびに 1 を追加します。
私も使用しました:
ruby -pe 'BEGIN{$i=0}; gsub(/\d+?/, "#{$i+=1}")' < test.txt
これは、変数の反復値の代わりに行番号を出力します。REGEX が一致する場合にのみ gsub() を呼び出すべきではありませんか?
このコマンドの目的は、反復値 + 1 をファイル内の次の番号に置き換えることです。例:
Lorem ipsum dolor 2 sit amet, consectetuer adipiscing elit, sed 7 diam nonummy nibh euismod 1 tincidunt ut laoreet dolore magna 10 aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci 15 tation ullamcorper suscipit lobortis ut aliquip ex ea commodo consequat.
出力:
Lorem ipsum dolor 1 sit amet, consectetuer adipiscing elit, sed 2 diam nonummy nibh euismod 3 tincidunt ut laoreet dolore magna 4 aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci 5 tation ullamcorper suscipit lobortis ut aliquip ex ea commodo consequat.
Update1:さらに読んだ後、この行を試しました:
ruby -pe 'BEGIN{$i=0}; gsub /\d+?/, "#{$i+=1}" if ~/\d+?/' < aa01.xhtml
しかし、私が使用したコマンドラインのプロセスは、そもそも正しくないようです。最初に数字のある行を見つける必要があります。次に、変数をインクリメントし、見つかった番号の代わりにそれを代入し、同じ行に次の番号が存在する場合は次の番号に移動します。