我有一個檔案,其中包含類似的行
TEST=value
我想進行搜索和替換,以便將第一個標記替換為其小寫等效項。所以上面會變成
prefix/test —output value
我嘗試了以下
perl -pi -e ’s/(.*)=(.*)/prefix\/lc($1) —output $2/g' .env
但顯然“lc”是按字面意思解釋的,因為結果是
prefix/lc(TEST) —output value
uj5u.com熱心網友回復:
可以使用\L...\E轉義,它在雙引號背景關系中作業(參見perlop)
perl -i -pe's{(.*)=(.*)}{prefix/\L$1\E --output $2}g' .env
請注意,\L將所有后續字符保持小寫直到遇到它,因此即使在這里不需要它\E也更安全。\E我使用{}{}了分隔符,所以不必逃避/'s.
或者,特別是如果還有更多作業要做,請通過修飾符評估替換部分中的代碼,例如/e
perl -i -pe's{(.*)=(.*)}{"prefix/" . lc($1) . " --output $2"}eg' .env
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/425544.html
