每次读取不同的字符串后仅替换一次字符串的循环

每次读取不同的字符串后仅替换一次字符串的循环

我正在尝试编辑一个定期更改的模组(我正在尝试将所有角色变成成人),并且在某些文件中我需要运行一个脚本来查找诸如“character = yes”之类的特定行,然后找到下一次迭代“age = {他们的年龄}”并将其替换为 18 到 45 之间的随机数。

我遇到的真正问题是如何告诉脚本在读取字符串 1 (字符 = yes)的每个实例后仅查找字符串 2 (年龄)的下一个实例,然后停止并查找下一个字符串 1 (字符=是)再次。

我不想替换字符串 2(年龄)的所有实例,因为它也适用于同一文件中的非字符。因此,我只想替换在字符串 1(字符 = yes)之后读取的字符串 2(年龄)的下一个实例,因为它是在括号中的块中编码的。

答案1

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

将第一次出现的age = <digits>after替换character = yesage = <some-random-number-between-18-and-45>

相关内容