使用perl交换Excel文件的列
我有一个以制表符分隔的Excel文件,有65列350行。我需要重新安排它,以便在第1列之后插入第60-65列,然后是第2列,第3列。。。col 59仅使用PERL。。i、 e Col1 Col60 Col61 Col62 Col2 Col3 Col4 Col5 Col6 我编写了一个shell命令来执行此操作: 粘贴您的awk代码可以简化:使用perl交换Excel文件的列,excel,perl,awk,Excel,Perl,Awk,我有一个以制表符分隔的Excel文件,有65列350行。我需要重新安排它,以便在第1列之后插入第60-65列,然后是第2列,第3列。。。col 59仅使用PERL。。i、 e Col1 Col60 Col61 Col62 Col2 Col3 Col4 Col5 Col6 我编写了一个shell命令来执行此操作: 粘贴您的awk代码可以简化: awk -F"\t" ' { printf("%s\t%s\t%s\t%s", $1, $60, $61, $62) for (i=2;
awk -F"\t" '
{
printf("%s\t%s\t%s\t%s", $1, $60, $61, $62)
for (i=2; i<=59; ++i) printf("\t%s", $i)
print ""
}
' part.xls > new.xls
请注意,perl中的字段索引是基于零的,而awk中的字段索引是基于一的,因此perl中的字段索引都少了一个。非常感谢您的更正。。是的,它使awk命令比原来的命令好得多!!nD PERL代码也可以在gr8中使用!!
open(my $fin, "<", "part.xls") or die("Can't open part.xls: $!");
open(my $fout, ">", "new.xls") or die("Can't open new.xls: $!");
while (<$fin>) {
my @f = split(/\t/);
my $lineout = join("\t", $f[0], @f[59..61], @f[1..58]);
print $fout $lineout, "\n";
}
close($fin);
close($fout);