ファイル内の文字列を検索したい場合、検索文字列が見つかった場合は、中括弧で値に基づいて3行を置換します。私は、スタックオーバーフロー一致するパターンが見つかったら追加する方法と行
Perl - Insert lines after a match is found in a file から解決策の1つを介して行っていた
が、発見されたイン・ファイル
しかし、物事は私のために INPUT_FILE働いていない。
abcdef1{3} { 0x55, 0x55, 0x55 }
abcdef2{2} { 0x55, 0x55}
を
コード:
use strict;
use warnings;
my $ipfile = 'input.txt';
open my $my_fh "<", $ipfile or die "Couldn't open input file: $!";
while(<$my_fh>)
{
if (/$abcdef1/)
{
s/abcdef1{3} {\n/abcdef1{3} {\nabcdef1 0x55\nabcdef1 0x55\nabcdef1
0x55\n/gm;
}
}
予想される出力:
abcdef1 0x55
abcdef1 0x55
abcdef1 0x55
abcdef2 0x55
abcdef2 0x55
説明に役立つと感謝します。
一見すると、 's/abcdef1 {3} {\ n/...}の最初の2つのcurlies' {} 'をエスケープする必要があります。それ以外の場合は、 'abcdef'の後に' 1 'の3文字、すなわち 'abcdef111'が続く。 's/abcdef1 \ {3 \} {\ n/...'を試してください。 – PerlDuck
は条件が満たされていないように見えます。 – sam
ああ、私はそれを逃した。あなたは 'use strict/warnings'を追加しました。あなたは警告を受けていませんでしたか?私は 'if(/ $ abcdef1 /)'が変数 '$ abcdef1'を補間しようとしていると思います。ドルをエスケープする:if(/ \ $ abcdef1 /) ' – PerlDuck