Perl
如何匹配單個模式並將其替換為perl中的多個模式
我有一個包含以下資訊的文件 - 輸入 -
a[1]= something_data_1; a[2]= something_data_2; a[3]= something_data_3;
所以我想用不同的模式替換那個“a”,如下所示,這裡的 diff* 是一個我想替換的字元串。
輸出 -
diff1 [1]= something_data_1; diff2 [1]= something_data_1; diff3 [1]= something_data_1; diff1 [2]= something_data_2; diff2 [2]= something_data_2; diff3 [2]= something_data_2;
…..
我試過了:
/usr/bin/perl -w open(FH,'<',$file_name); foreach(<FH>) { if(/a(\[.*)/) { $_= "diff1$1 ". "diff2$1"; } }
在嘗試了這個之後,我得到了這樣的輸出,
差異
$$ 1 $$= diff2 something_data; 我不明白該怎麼做
你可能想要類似的東西
chomp(my $line = $_); if ($line eq "a") { $_ = "diff1\ndiff2\ndiff3\n"; }
我假設你還沒有
chomp
編輯,所以$_
仍然是換行符的第三個。您需要擷取“a”之後的文本,以便您可以重複使用它:if (/^(\s*)a(\[.*)/) { $_ = "${1}diff1$2". "${1}diff2$2". "${1}diff3$2; }