perl 搜索和替换

perl 搜索和替换

我有一个文件

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”(忽略记录分隔符)?这对我来说很不寻常,就像这个单行命令列表一样。

相关内容