2013-05-12 24 views
6

Bu soruya ne google'da ne de stackoverflow üzerinde iyi ve basit bir cevap bulamadım.İki diziyi bash komut dosyası ile yan yana nasıl yazdırılır?

Temel olarak, bir dizi bir terimler listesi ve diğer terimlerin tanımları olduğundan, uçbirime yazdırmam gereken iki dizim var. Bunu yapmanın iyi bir yolu bilen var mı?

Şimdiden teşekkürler.

Her iki diziler aynı uzunlukta varsayarak bunu gerçekleştirmek için döngü bir C-stili kullanabilirsiniz
+0

İlişkilendirilmiş bir dizi kullanın? – jordanm

cevap

6

:

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

Burada "tek liner" var:

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

Bu yaratacak bir terim ve bir sekme ile ayrılmış bir definden oluşan çizgiler, kesinlikle konuşmayan "yan yana" olabilir (gerçekten sütunlarda olmadıkları için). ped veya tam olarak 12 karakter terimleri kesecek, sonra da (yerine bir sekme iki sütun arasına boşluk koyacağız

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

: İlk sütun nasıl olması gerektiğini geniş bilseydim, böyle bir şey kullanabilirsiniz -d' ').