通过在perl中包含一行代码删除前两行
我将以下文件作为脚本的输出:-通过在perl中包含一行代码删除前两行,perl,Perl,我将以下文件作为脚本的输出:- ----Local Rates---- Market Merchant SE number mismatch Dupe Check S.Number Local Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec FY Abc Asfinag 1 9406589846 EUR 1,125 1,125 1,125 1,125 1,125 1,125 1,125 1,125 1,125 1,125 1,125 1,125
----Local Rates----
Market Merchant SE number mismatch Dupe Check S.Number Local Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec FY
Abc Asfinag 1 9406589846 EUR 1,125 1,125 1,125 1,125 1,125 1,125 1,125 1,125 1,125 1,125 1,125 1,125 13,500
Abc BÖG 1 #N/A! EUR 844 844 844 844 844 844 844 844 844 844 844 844 10,125
Abc Gault Millau 1 9496732942 EUR 3,375 3,375 3,375 3,375 3,375 3,375 3,375 3,375 3,375 3,375 3,375 3,375 40,500
Abc OEGV 1 9404123606 EUR 187 187 187 187 187 187 187 187 187 187 187 187 2,244
Abc Relax Guide 1 9404130395 EUR 675 675 675 675 675 675 675 675 675 675 675 675 8,100
Abc Sport 2000 1 9495264095 EUR 51 51 51 51 51 51 51 51 51 51 51 51 608
Abc Strategic Investment Pool 1 #N/A! EUR 1,980 1,980 1,980 1,980 1,980 1,980 1,980 1,980 1,980 1,980 1,980 1,980 23,760
Abc Strolz 1 #N/A! EUR 281 281 281 281 281 281 281 281 281 281 281 281 3,375
Abc Urlaubsspezialisten 1 Urlaubsspezialisten EUR 619 619 619 619 619 619 619 619 619 619 619 619 7,425
Abc Vamed 1 9404119554 EUR 281 281 281 281 281 281 281 281 281 281 281 281 3,375
Abc Vienna Fashion Night 1 Vienna Fashion Night EUR 1,688 1,688 1,688 1,688 1,688 1,688 1,688 1,688 1,688 1,688 1,688 1,688 20,250
Abc Vineus / C&C Pfeifer 1 Vineus / C&C Pfeifer EUR 1,012 1,012 1,012 1,012 1,012 1,012 1,012 1,012 1,012 1,012 1,012 1,012 12,150
Abc IKEA 1 #N/A! EUR 394 394 394 394 394 394 394 394 394 394 394 394 4,725
Abc REWE 1 9502932411 EUR 675 675 675 675 675 675 675 675 675 675 675 675 8,100
我使用以下代码获得了上述输出:
#!/usr/bin/perl
use strict;
use warnings;
open my $fh, '<', 'File' or die "Can't open file: $!\n";
while (<$fh>) {
my @fields = split(/\t/);
print "@fields[0,1,3,4,5,6,21,22,23,24,25,26,27,28,29,30,31,32,33]\n";
}
我该怎么办?试着这样做,逻辑正好相反,我只是添加了一行
$. <= 2 and next;
$ 试着这样做,逻辑正好相反,我只是添加了一行
$. <= 2 and next;
$ 跳过前两行不需要外部一行
while (<$fh>) {
next if $. <= 2;
# ..
}
while(){
接下来,如果$.您不需要外部一行代码来跳过前两行
while (<$fh>) {
next if $. <= 2;
# ..
}
while(){
下一步if$。您可以通过在打印时使用if条件(即if$。>2)来实现相同的效果
#!/usr/bin/perl
use strict;
use warnings;
open my $fh, '<', 'File' or die "Can't open file: $!\n";
while (<$fh>) {
my @fields = split(/\t/);
print "@fields[0,1,3,4,5,6,21,22,23,24,25,26,27,28,29,30,31,32,33]\n" if $. > 2;
}
!/usr/bin/perl
严格使用;
使用警告;
打开我的$fh,“您可以通过在打印时使用if条件来实现相同的功能,即if$.>2
#!/usr/bin/perl
use strict;
use warnings;
open my $fh, '<', 'File' or die "Can't open file: $!\n";
while (<$fh>) {
my @fields = split(/\t/);
print "@fields[0,1,3,4,5,6,21,22,23,24,25,26,27,28,29,30,31,32,33]\n" if $. > 2;
}
!/usr/bin/perl
严格使用;
使用警告;
打开我的$fh,'这正是我以前写的=)@sputnick是的,准确地说是六秒钟。:)
不,50秒IIRC;)谢谢大家!!但我真正的问题是把两个脚本合并到一个脚本中,我对Perl非常陌生,我在不同的帖子中发布了一个查询。希望你们也能在这方面帮助我..这正是我以前写的=)@sputnick是的,六秒准确地说是几秒钟。:)
不,50秒IIRC;)谢谢大家!!但我真正的问题是把两个脚本合二为一,而且我对Perl非常陌生。我在不同的帖子中发布了一个查询。希望你们也能帮我。下一个if
公式比使用和更直观。我发现下一个if
形式比使用和
更直观的是,您可以使用范围使字段更可读:(0,1,3..6,21..33)
您可以使用范围使字段更可读:(0,1,3..6,21..33)