gpt4 book ai didi

regex - 如何在 Perl 中用不同的随机值多次替换同一个字符串?

转载 作者:行者123 更新时间:2023-11-29 09:17:52 25 4
gpt4 key购买 nike

我正在使用这个 Perl 单行代码(在 bash 中)成功地用给定文件中的随机字符串替换字符串:

perl -pi -e "s/replace\ this/`</dev/urandom tr -dc A-Za-z0-9 | head -c64`/g" example.php

但是,我不知道如何用不同随机字符串替换几个“replace this”。

最佳答案

perl -pi -e 's/replace this/join "", map { ("a" .. "z", "A" .. "Z", 0 .. 9)[rand(62)] } 1 .. 64/eg' example.php

让我们把它分解成几个部分。

("a" .. "z", "A" .. "Z", 0 .. 9)

是一个列表,其中包含您希望出现在随机字符串中的字符。

[rand(62)]

这是在随机位置索引上面的列表(使用 rand 函数)。 62 对应于列表中的项目数。 rand 函数返回一个介于零和您给它的数字减一之间的数字。令人高兴的是,在 Perl 5 中数组和列表的索引从零开始,所以这很完美。因此,每次运行该段代码时,您都会从可接受字符列表中随机获得一个字符。

map将一个代码块和一个列表作为参数。它运行代码块并返回传递给它的列表中每个项目的结果。该列表是 1 .. 64,因此代码块将运行六十四次。由于代码块包含生成随机字符的代码,因此map函数的结果是64个随机字符。

join函数接受一个分隔符和一个列表,并将列表作为由分隔符分隔的字符串返回(例如 join ",", "a", "b", "c" 返回 "a, b,c").在这种情况下,我们使用一个空字符串作为分隔符,因此它只生成一个由列表中的字符(即 64 个随机字符)组成的字符串。

现在我们准备好查看替换。它查找字符串 "replace this" 的每个实例(因为 /g 选项)并在替换端运行代码(因为 /e options) 并将字符串 "replace this" 替换为在替换端执行的最后一条语句的值(在本例中,join 的返回值>).

关于regex - 如何在 Perl 中用不同的随机值多次替换同一个字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3873028/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com