我有一个文件
love=/abc
day=abc
night=xyz
afternoon=xyzabc
我正在读取变量中的每个值,现在我需要用特定的字符串替换第二个变量。就像
$1st = "/abc" $replace1 = "/abc/pqr"
$2nd = "abc" $replace2 = "abc1"
$3rd = "xyzabc" $replace3 = "mnpabc"
我用perl -0777 -pi -2 's%$1st%$replace1%' file
这个做第一行替换
我用perl -0777 -pi -e 's/3rd/$replace1/ file
这个做第三行。
但是当我用 $replace 替换 $2nd 时,它会替换所有有“abc”的地方。我怎样才能限制它一次只替换一个元素?
答案1
很难理解你到底在做什么,但你的输入文件符合配置文件的格式(如 windows ini 或 unix conf)。我建议你使用 Perl 模块,它可以帮助轻松读取和写入这种格式。尝试使用 CPAN 中的 Config::Simple 或 Config::INI。
否则,您是否故意使用“perl -0777”(忽略记录分隔符)?这对我来说很不寻常,就像这个单行命令列表一样。