【发布时间】:2014-08-19 16:36:32
【问题描述】:
我需要解析许多分隔文件,我有一个问题。在 while 循环中,如何在字段中进行替换?让我给出一些示例代码和数据。
数据示例:
Word,Name,Number,You/Me,Data
Hello,Josh,123,Me,Data
Hello,Joe,222,Me,Data
目标:
在本例中,我想做的是对 $[2] 和 $[3] 进行替换。
换句话说,字段 $[2] 将是数字字段。 $[3] 将是 You/Me 字段。
我的代码是这样的:
my @F = split;
while (<>) {
if ($F[3] =~ /^You$/ print "Me";) next;
if ($F[2] =~ /^222$/ print "P";) next;
if ($F[2] =~ /^123$/ print "P";) next;
print @F;
}
我似乎找不到在特定字段中进行替换的正确语法,希望有人能提出建议。我的结果目标如下。
期望的结果:
Word,Name,Number,You/Me,Data
Hello,Josh,P,Me,Data
Hello,Joe,P,Me,Data
我只想对指定的字段执行替换,而其他所有内容保持不变。
另外,我可能有这样一种情况,我想用完全不同的东西来分隔某些字段,而其他一切都保持不变。我也想使用标量。
数据示例:
Word,Name,Number,You/Me,Data
Hello,Josh,123,Me,Data
Hello,Joe,222,Me,Data
期望的结果:
Word,Name,Number,You/Me,Data
Hello,Josh,P-Me,Data
Hello,Joe,P-Me,Data
标量示例
my $numbers = qw/222|123/;
my @F = split;
while (<>) {
if ($F[3] =~ /^You$/ print "Me";) next;
if ($F[2] = /^$numbers$/ print "P";) next;
join ("-",$[2],$[3]);
print @F;
}
所以最后,我想知道如何在字段中进行替换,使用不同的分隔符连接特定字段,以及在这种拆分/连接脚本中实现标量。
【问题讨论】: