Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用perl交换Excel文件的列_Excel_Perl_Awk - Fatal编程技术网

使用perl交换Excel文件的列

使用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;

我有一个以制表符分隔的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; 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);