在命令行上执行 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
我有一个包含类似
行的文件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