2013-05-12 85 views
6

我找不到一個很好的和簡單的回答這個問題既不穀歌也沒有這裏在stackoverflow。如何使用bash腳本並排打印兩個數組?

基本上我有兩個數組,我需要打印到終端並排,因爲一個數組是一個術語列表,另一個術語的定義。有沒有人知道這樣做的好方法?

在此先感謝。

+0

使用關聯數組? – jordanm 2013-05-12 18:29:09

回答

6

可以使用C風格的for循環來實現這一點,假設兩個數組的長度相同:

for ((i=0; i<=${#arr1[@]}; i++)); do 
    printf '%s %s\n' "${arr1[i]}" "${arr2[i]}" 
done 
8

這裏有一個「一班輪」:

paste <(printf "%s\n" "${terms[@]}") <(printf "%s\n" "${defs[@]}") 

這將創建由一個由tab分隔的term和def組成的行,嚴格來說,它們可能不是「並排」(因爲它們不是真正在列中)。如果你知道的第一列應該有多寬是,你可以使用類似:

paste -d' ' <(printf "%-12.12s\n" "${terms[@]}") <(printf "%s\n" "${defs[@]}") 

將填充或截斷條件爲12個字符準確,然後把兩列,而不是一個標籤之間的空間( -d' ')。