2013-05-12 10 views
6

Nie mogłem znaleźć dobrej i prostej odpowiedzi na to pytanie ani w Google, ani tutaj na stackoverflow.Jak wydrukować dwie tablice obok skryptu bash?

Zasadniczo mam dwie tablice, które muszę wydrukować na terminalu obok siebie, ponieważ jedna tablica jest listą terminów, a druga definicjami terminów. Czy ktoś wie, jak to zrobić?

Z góry dziękuję.

+0

Użyj asocjacyjnej tablicy? – jordanm

Odpowiedz

6

Można użyć stylu C dla pętli do osiągnięcia tego celu, przy założeniu, że oba zespoły mają taką samą długość:

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

Oto "one-liner":

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

To stworzy linie składające się z wyrażenia i def oddzielone tabulatorem, które mogą nie być, ściśle mówiąc, "obok siebie" (ponieważ tak naprawdę nie są w kolumnach). Gdybyś wiedział, jak szeroki pierwsza kolumna powinna być, można użyć coś takiego:

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

który pad lub skrócić terminy do 12 znaków dokładnie, a następnie umieścić spację między dwoma kolumnami, a nie na karcie (-d' ').