2013-08-16 21 views
0

將列從csv文件轉換爲數組格式的最簡單方法是什麼?將列數據轉換爲數組以便進一步處理

我會有3列像la_liga,playernames_laliga ,,和teamid_laliga。基本上,我想要接近陣列格式的任何東西,有沒有辦法使用命令行來做到這一點?有太多的行需要手動完成,所以我需要基本的數組格式,我可以直接使用它進行進一步的操作。

Athletic Bilbao 336 The Parmtree 
Atletico Madrid 798466 Santiagounreal 
Barcelona 90402 TW 
Celta Vigo 24214 Bonz 
Deportivo La Coruna 142758 Boom Shakalaka 
Espanyol 1658 Tangtastic 
Getafe 8333 Declan McCarthy 
Granada 2253 Green Windmill 
Levante 14069 In Tommy We Trust 
Malaga 4877 Ajay 
Mallorca 77201 Emperikal 
Osasuna 2714 Declan Quinn 
Rayo Vallecano 171 Hillbilly Pete 
Real Betis 32696 Billy Gilmore 
Real Madrid 4 Demi 
Real Sociedad 485 Yossi 
Real Zaragoza 227 Scroobius Mac 
Sevilla 8157 Chris_White 
Valencia 4835 Old School 
Valladolid 69246 Pepin 

這在CSV

"Athletic Bilbao","336","The Parmtree" 
"Atletico Madrid","798466","Santiagounreal" 
"Barcelona","90402","TW" 
"Celta Vigo","24214","Bonz" 
"Deportivo La Coruna","142758","Boom Shakalaka" 
"Espanyol","1658","Tangtastic" 
"Getafe","8333","Declan McCarthy" 
"Granada","2253","Green Windmill" 
"Levante","14069","In Tommy We Trust" 
"Malaga","4877","Ajay" 
"Mallorca","77201","Emperikal" 
"Osasuna","2714","Declan Quinn" 
"Rayo Vallecano","171","Hillbilly Pete" 
"Real Betis","32696","Billy Gilmore" 
"Real Madrid","4","Demi" 
"Real Sociedad","485","Yossi" 
"Real Zaragoza","227","Scroobius Mac" 
"Sevilla","8157","Chris_White" 
"Valencia","4835","Old School" 
"Valladolid","69246","Pepin" 

所需的輸出:

$col1=array("Athletic Bilbao","Atletico Madrid","Barcelona","Celta Vigo","Deportivo La Coruna","Espanyol","Getafe","Granada","Levante","Malaga","Mallorca","Osasuna","Rayo Vallecano","Real Betis","Real Madrid","Real Sociedad","Real Zaragoza","Sevilla","Valencia","Valladolid"); 
$col2=array('336','798466','90402','24214','142758','1658','8333','2253','14069','4877','77201','2714','171','32696','4','485','227','8157','4835','69246'); 
$col3=array("The Parmtree","Santiagounreal","TW","Bonz","Boom Shakalaka","Tangtastic","Declan McCarthy","Green Windmill","In Tommy We Trust","Ajay","Emperikal","Declan Quinn","Hillbilly Pete","Billy Gilmore", "Demi","Yossi","Scroobius Mac","Chris_White","Old School","Pepin"); 

有人必須有一個現成的劇本,這一點,對不對?

+2

你能提供*既*示例輸入和所需的輸出? –

+0

@AdrianFrühwirth我已經給出了一箇中間步驟的示例輸入和輸出 –

+0

如果您想輸出有效的PHP數組語法,請使用PHP解析並查看[var_export](http://uk3.php.net/manual/ EN/function.var-export.php)。但是,你能否提供更多的細節,爲什麼你認爲你需要這樣做?可能有更好的解決方案。 – cmbuckley

回答

4
$ awk -F, '{for (i=1;i<=NF;i++) col[i]=col[i] (NR==1?"":FS) $i} END{gsub(/"/,"\047",col[2]); for (i=1;i<=NF;i++) printf "$col%d=array(%s);\n",i,col[i]}' file 
$col1=array("Athletic Bilbao","Atletico Madrid","Barcelona","Celta Vigo","Deportivo La Coruna","Espanyol","Getafe","Granada","Levante","Malaga","Mallorca","Osasuna","Rayo Vallecano","Real Betis","Real Madrid","Real Sociedad","Real Zaragoza","Sevilla","Valencia","Valladolid"); 
$col2=array('336','798466','90402','24214','142758','1658','8333','2253','14069','4877','77201','2714','171','32696','4','485','227','8157','4835','69246'); 
$col3=array("The Parmtree","Santiagounreal","TW","Bonz","Boom Shakalaka","Tangtastic","Declan McCarthy","Green Windmill","In Tommy We Trust","Ajay","Emperikal","Declan Quinn","Hillbilly Pete","Billy Gilmore","Demi","Yossi","Scroobius Mac","Chris_White","Old School","Pepin"); 
+0

你先生是了不起的:-) –

+0

忽略,一個簡單的正則表達式查找和替換工程偉大除此之外。只是忽略我問。 –

+0

想要解釋一下你做了什麼...而不是僅僅做複製/粘貼....例如NF,NR,FS是什麼意思?對你做什麼的基本上是 –