毎回別の文字列を読み取った後、文字列を一度だけ置き換えるループ

毎回別の文字列を読み取った後、文字列を一度だけ置き換えるループ

定期的に変更されるモードを編集しようとしています(すべてのキャラクターを大人にしようとしています)、一部のファイルでは、「character = yes」などの特定の行を見つけて、次のものを見つけるスクリプトを実行する必要があります。 「age={彼らの年齢}」を繰り返し、18から45までの任意の数字に置き換えます。

私が持っている実際の問題は、文字列1(char = yes)の各インスタンスを読み取り、次に文字列2(age)の次のインスタンスのみを検索するようにスクリプトに指示し、停止して次の文字列1(char = yes)を見つけるように指示する方法です。 )再び。

文字列2(age)のすべてのインスタンスを置き換えたくありません。なぜなら、同じファイル内の文字以外の項目でも機能するからです。したがって、文字列 1(char = yes) の後に読み込まれる文字列 2(age) の次のインスタンスを角かっこで囲まれたブロックにエンコードされているので、変更したいと思います。

ベストアンサー1

perl -0777 -pe 's/character = yes.*?age = \K\d+/int(18+rand(45-18+1))/ges' < file

age = <digits>after の最初の項目を次character = yesのように置き換えます。age = <some-random-number-between-18-and-45>

おすすめ記事