我有一个包含以下信息的文件-输入-
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";
}
}
尝试这个之后,我得到这样的输出,
diff [1] = diff2 something_data;
我不知道该怎么办
您可能想要类似的东西
chomp(my $line = $_);
if ($line eq "a") {
$_ = "diff1\ndiff2\ndiff3\n";
}
我假设您还没有chomp
编辑过,所以$_
换行符仍然排在第3位。您需要捕获“ a”之后的文本,以便可以重新使用它:
if (/^(\s*)a(\[.*)/) {
$_ = "${1}diff1$2".
"${1}diff2$2".
"${1}diff3$2;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句