perlの検索と置換


0

ファイルがあります

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つの要素のみを置き換えるようにこれを制限するにはどうすればよいですか?


この上でいくつかのアイデアを持つ誰も
Guestme

回答:


1

あなたが何をしているのかを正確に理解することは困難ですが、入力ファイルは構成ファイルの形式(windows iniやunix confなど)に適合しています。この形式を簡単に読み書きできるPerlモジュールを使用することをお勧めします。CPANからConfig :: SimpleまたはConfig :: INIを試してください。

そうでない場合は、意図的に「perl -0777」(レコード区切り文字を無視)を使用していますか?これは、この一般的なワンライナーのリストと同様、私にとっては珍しいことです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.