我有一个文件,里面有这样的行
TEST=value
我想进行搜索并替换,以便将第一个令牌替换为其小写等效项。 所以以上将转换为
prefix/test —output value
我尝试了以下方法
perl -pi -e ’s/(.*)=(.*)/prefix/lc($1) —output $2/g' .env
但显然"lc"被字面解释为,因为结果是
prefix/lc(TEST) —output value
可以使用L...E
转义,它们在双引号上下文中工作(请参阅perlop)
perl -i -pe's{(.*)=(.*)}{prefix/L$1E --output $2}g' .env
请注意,L
会一直使用小写所有后续字符,直到它遇到E
因此即使这里不需要它,使用E
也会更安全。我使用了{}{}
分隔符,因此不必转义/
。
或者,特别是如果还有更多事情要做,请通过/e
修饰符评估替换部分中的代码,例如
perl -i -pe's{(.*)=(.*)}{"prefix/" . lc($1) . " --output $2"}eg' .env