在命令行上执行 perl 搜索和替换时,如何将匹配的标记小写?

When executing a perl search and replace on the command line, how do I lower case a matched token?

我有一个包含类似

行的文件
TEST=value

我想进行搜索和替换,以便将第一个标记替换为其对应的小写字母。所以上面会变成

prefix/test —output value

我尝试了以下

perl -pi -e ’s/(.*)=(.*)/prefix\/lc() —output /g' .env

但显然“lc”是按字面解释的,因为结果是

prefix/lc(TEST) —output value

可以使用 \L...\E 转义,它在 double-quoted 上下文中工作(参见 in perlop

perl -i -pe's{(.*)=(.*)}{prefix/\L\E --output }g' .env

请注意,\L 保留 lower-casing 所有后续字符,直到遇到 \E,因此即使此处不需要 \E 也更安全。我使用了 {}{} 分隔符,这样就不必转义 /

或者,特别是如果还有更多工作要做,请通过 /e 修饰符评估替换部分中的 code,例如

perl -i -pe's{(.*)=(.*)}{"prefix/" . lc() . " --output "}eg' .env