2016-01-14 109 views
-7

我有簡單的簡單的CSV文件如下(3列4行的那個例子):從bash或Perl腳本讀取CSV

A  , B  , C 
A  , 」B,C」 , D 
「A,B」 , C  , D 
A  , B  , 」C,D」 

如何創建腳本,我可以進入列和行號並打印回我的內容?

注意!將引號作爲參數,而不是作爲一個分離器之間的逗號..

編輯: 通緝輸出: 的參數:1,1(列,行)給出的答案會是:A 的參數: 2,2(col,row)給出的答案將是:B,參數爲C :1,3(col,row)給定答案將爲:A,B 參數:3,3(col,row)給出的答案是:d

在先進的感謝

+0

沒有,我;我只是編輯我的話題:) – user5789818

+0

我試着想像這裏顯示的示例: http://stackoverflow.com/questions/14492590/using-bash-sed-awk-to-extract-rows- and-columns-in-csv-files – user5789818

回答

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,雖然文字:: 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 
+0

感謝您的幫助! 如果我試圖模仿它的bash腳本一樣:1 #/斌/慶典 COL = $行= $ 16 而IFS = '' 讀-r COL1 COL2 COL3;做 \t回聲-e做$ COL1 user5789818

+0

@ user5789818,wut? – ikegami

+0

我嘗試做你做的,但在bash腳本 – user5789818