2015-05-20 92 views
1

我有它設置如下表中其數據的文本文件列,但用逗號分隔,例如:猛砸格式文本文件導入

姓名,年齡,FavColor,地址

鮑勃,18,藍,1史密斯街

朱莉,17,黃色,4約翰街

首先,我已經TR使用for循環,並將每個'列'及其所有值放入單獨的數組中。

eg /'nameArray'將包含bob,julie。

這是從我的實際腳本代碼,有12列,因此爲什麼C不應該大於12。

declare -A Array 

for((c = 1; c <= 12; c++)) 
{ 
    for((i = 1; i <= $total_lines; i++)) 
    { 
     record=$(cat $FILE | awk -F "," 'NR=='$i'{print $'$c';exit}'| tr -d ,) 
     Array[$c,$i]=$record 

    } 
} 

在這裏,我再使用「的printf」功能格式化每個陣列和將它們打印爲列。與此問題是,我有超過3個數組,在我的實際代碼中,他們都在同一個'printf'行。我不喜歡,我知道這是一個愚蠢的做法。

for ((i = 1; i <= $total_lines; i++)) 
{ 
    printf "%0s %-10s %-10s...etc \n" "${Array[1,$i]}" "${Array[2,$i]}" "${Array[3,$i]}" ...etc 
} 

但這不過給我所需要的輸出,見下圖:

enter image description here

我想弄清楚如何做到這一點並不需要大規模的打印語句的另一種方式。同樣,我第一次調用for循環時,出現'awk'錯誤。

任何意見,將不勝感激,我已經通過多個線程和帖子看,試圖找到一個合適的解決方案,但沒有找到有用的東西。

回答

6

嘗試column命令狀

column -t -s','

這是我可以迅速得到。詳情請參閱手冊頁。

+1

我不敢相信我爲相同的輸出做了所有的哈哈。唯一的問題是我得到的專欄太長。 – Lizzeiy

+0

很久以前就回想起這個,對細節不太確定,也許手冊可能會幫到你。 – phoxis

+0

錯誤:「輸入行的長度限制爲LINE_MAX(2048)個字節。」可能是問題。 – Lizzeiy