在Linux环境中将CSV文件转换为XLS文件(SSR 8020 Ericsson)

我有CPU_status.csv文件,我试图将它转换为一个CPU_test.xls格式,在Linux VI(爱立信SSR8020)中使用以下脚本“ ./Test.sh ”,但是当我ftp出来时,我总是在excel中获得一列。 build议和反馈表示赞赏。 谢谢你们

在这里输入图像说明

#!/bin/bash echo "Check CPU" tail -n +2 CPU_status.csv | head -1 | awk 'BEGIN{FS="|"}{print $1,$3,$16,$33,$50,$67,$81,$98}'| column -t;tail -n 50 CPU_status.csv | awk 'BEGIN{FS="|"}{print $1,$3,$16,$33,$50,$67,$81,$98}' | column -t echo "Hit Enter to Continue..." sleep 1 read continue echo "./Test.sh>CPU_test.xls" ./Test.sh>CPU_test.xls echo "Hit Enter to Continue..." sleep 1 read continue 

您可以生成以分号分隔的文件,然后Excel以您需要的方式读取数据,并将它们传播到随后的列中。 另外删除column -t命令。

它看起来像这样:

tail -n +2 CPU_status.csv | head -1 | awk 'BEGIN{FS="|"; OFS=";"}{print $1,$3,$16,$33,$50,$67,$81,$98}'; tail -n 50 CPU_status.csv | awk 'BEGIN{FS="|"; OFS=";"}{print $1,$3,$16,$33,$50,$67,$81,$98}'

Perl有方便的CPAN模块来读取和写入Excel .xls和xlsx。

 #!/home/utils/perl-5.8.8/bin/perl use Spreadsheet::WriteExcel; use warnings; use strict; # open input file (fields delimited by ',') my $inputfile = shift; my $outputfile = shift; open my $IN, '<', $inputfile, or die "Could not open $inputfile"; # Create a new Excel workbook my $workbook = Spreadsheet::WriteExcel->new($outputfile); # Add a worksheet and a row my $worksheet = $workbook->add_worksheet(); my $xlscol = my $xlsrow = 0; for my $line (<$IN>) { print "\$line: $line"; my @fields = split /,/, $line; print "\@fields: @fields\n"; for my $csvcol (1, 3, 16, 33, 50, 67, 81, 98) { $xlscol++; print "$xlsrow\t$xlscol\t$csvcol\t$fields[$csvcol]\n"; $worksheet->write($xlsrow, $xlscol, $fields[$csvcol]); } $xlsrow++; } # Usage: writeXlsExample.pl CPU_status.csv my.xls # File has been written to my.xls