如何在Linux中使用Shell脚本从Excel工作表中读取数据?

如何在Linux中使用Shell脚本从Excel工作表中读取数据?,linux,excel,bash,shell,unix,Linux,Excel,Bash,Shell,Unix,各位,, 我是Linux新手&对编写shell脚本非常感兴趣。这次我在做一张excel表格。在那张excel表格里会有序号。在第一列中,域名在第二列中。我的excel工作表中有100个域。所以,我不想手动复制每个域并将它们粘贴到浏览器中以检查所有域。我只想编写一个shell脚本,它可以通过运行单个shell脚本将所有域打开到浏览器中。 请帮帮我。我将非常感谢你 谢谢和问候- Reetesh Chauhan您可以使用以下样本: 您可以使用perl: #!/usr/bin/perl use Spr

各位,, 我是Linux新手&对编写shell脚本非常感兴趣。这次我在做一张excel表格。在那张excel表格里会有序号。在第一列中,域名在第二列中。我的excel工作表中有100个域。所以,我不想手动复制每个域并将它们粘贴到浏览器中以检查所有域。我只想编写一个shell脚本,它可以通过运行单个shell脚本将所有域打开到浏览器中。 请帮帮我。我将非常感谢你

谢谢和问候- Reetesh Chauhan

您可以使用以下样本:

您可以使用
perl

#!/usr/bin/perl
use Spreadsheet::WriteExcel;
my $workbook = Spreadsheet::WriteExcel->new("test.xls"); 
my $worksheet = $workbook->add_worksheet();
open(FH,"<file") or die "Cannot open file: $!\n";
my ($x,$y) = (0,0);
while (<FH>){ 
 chomp;
 @list = split /\s+/,$_;
 foreach my $c (@list){
    $worksheet->write($x, $y++, $c);     
 }
 $x++;$y=0;
}
close(FH);
$workbook->close();

xls2csv
将把您的xls文件转换为CSV格式

通过管道将其连接到
sed
以删除双引号

使用
while
迭代每一行

echo
每行(
l
)到
awk
,将第二列(
$2
)放入
$d
(域)变量

然后将其发送到浏览器。您可以用您喜爱的浏览器替换lynx。GUI浏览器将和TUI浏览器一样容易工作

xls2csv domains.xls | sed -e's/"//g' | while read l; do d=`echo "$l" | awk  '{print $2}'`; lynx "$d"; done

使用一种不那么讨厌的文件格式会简化很多事情。Shell脚本确实喜欢在文本行上工作,所以第1步应该是转换成不同的格式,例如,CSVIsn您的答案不是与OP想要的相反吗?它是在写,而不是在读。感谢PyExcelator的建议。请注意,
xls2csv
仅适用于Office 97-2003格式。如果您有LibreOffice,您可以运行
LibreOffice--headless--convert to/xls/path/to/source.xlsx
对其进行转换。您可以对Excel 2007及更高版本使用
xlsx2csv
xls2csv domains.xls | sed -e's/"//g' | while read l; do d=`echo "$l" | awk  '{print $2}'`; lynx "$d"; done