从bash或perl脚本中读取CSV

时间:2016-01-14 14:48:39

标签: bash perl

我有简单的简单CSV文件如下(该示例为3列和4行):

A       , B      , C
A       , ”B,C”  , D
“A,B”   , C      , D
A       , B      , ”C,D”

如何创建我可以输入列和行号的脚本,然后打印回内容?

请注意!引号之间的逗号作为参数而不是分隔符..

编辑: 通缉输出: 对于参数:1,1(col,row)给定的答案是:A 对于参数:2,2(col,row)给定的答案是:B,C 对于参数:1,3(col,row)给定的答案将是:A,B 对于参数:3,3(col,row)给出的答案是:D

先谢谢

1 个答案:

答案 0 :(得分:0)

a.pl

#!/usr/bin/perl

use strict;
use warnings;

use Text::CSV_XS qw( );

my $row_num = shift;
my $col_num = shift;

my $csv = Text::CSV_XS->new({ binary => 1, auto_diag => 1 });

while (my $row = $csv->getline(\*ARGV)) {
    next if --$row_num;

    print($row->[$col_num-1], "\n");
    last;
}

a.csv :(您发布的内容不是有效的CSV,但Text :: CSV_XS可能会使用正确的选项处理它。)

A,B,C
A,"B,C",D
"A,B",C,D
A,B,"C,D"

输出:

$ ./a.pl 1 1 a.csv
A

$ ./a.pl 2 2 a.csv
B,C

$ ./a.pl 3 1 a.csv
A,B

$ ./a.pl 3 3 a.csv
D