我正在尝试编辑一个定期更改的模组(我正在尝试将所有角色变成成人),并且在某些文件中我需要运行一个脚本来查找诸如“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 = yes
为age = <some-random-number-between-18-and-45>