У меня есть файл

love=/abc
day=abc
night=xyz
afternoon=xyzabc

Я читаю каждое значение по значению в переменной, теперь мне нужно заменить 2- ю переменную определенной строкой. лайк

$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 это делает 3-ю строку.

но в тот момент, когда я заменяю $ 2nd на $ replace, он заменяет все места, где есть "abc". как я могу ограничить это, чтобы заменить только один элемент за один раз?

1 ответ1

1

Трудно понять, что именно вы делаете, но ваш входной файл соответствует формату файла конфигурации (например, windows ini или unix conf). Я бы посоветовал вам использовать модуль Perl, который поможет легко читать и писать этот формат. Попробуйте Config::Simple или Config::INI из CPAN.

В противном случае, вы намеренно используете "perl -0777" (игнорировать разделители записей)? Это необычно для меня, как и этот список однострочников в целом.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .