我找不到一個很好的和簡單的回答這個問題既不穀歌也沒有這裏在stackoverflow。如何使用bash腳本並排打印兩個數組?
基本上我有兩個數組,我需要打印到終端並排,因爲一個數組是一個術語列表,另一個術語的定義。有沒有人知道這樣做的好方法?
在此先感謝。
我找不到一個很好的和簡單的回答這個問題既不穀歌也沒有這裏在stackoverflow。如何使用bash腳本並排打印兩個數組?
基本上我有兩個數組,我需要打印到終端並排,因爲一個數組是一個術語列表,另一個術語的定義。有沒有人知道這樣做的好方法?
在此先感謝。
可以使用C風格的for循環來實現這一點,假設兩個數組的長度相同:
for ((i=0; i<=${#arr1[@]}; i++)); do
printf '%s %s\n' "${arr1[i]}" "${arr2[i]}"
done
這裏有一個「一班輪」:
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' '
)。
使用關聯數組? – jordanm 2013-05-12 18:29:09