2013-05-12 4 views
6

Ich konnte weder auf Google noch auf Stackoverflow eine gute und einfache Antwort auf diese Frage finden.Wie zwei Arrays nebeneinander mit Bash-Skript drucken?

Grundsätzlich habe ich zwei Arrays, die ich in das Terminal nebeneinander drucken muss, da ein Array eine Liste von Begriffen und die anderen die Begriffe Definitionen ist. Kennt jemand einen guten Weg, dies zu tun?

Vielen Dank im Voraus.

+0

Verwenden Sie ein assoziatives Array? – jordanm

Antwort

6

Sie einen C-Stil für Schleife um dies zu erreichen können, vorausgesetzt, beide Arrays die gleiche Länge:

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

Hier ist ein "one-liner":

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

Dies erstellen Zeilen, die aus einem Begriff und einem Def bestehen, getrennt durch einen Tab, der streng genommen nicht "nebeneinander" sein darf (da sie nicht wirklich in Spalten sind). Wenn Sie wüssten, wie weit die erste Spalte sein sollte, könnten Sie so etwas wie verwenden:

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

das Pad oder die Bedingungen genau zu 12 Zeichen abgeschnitten, und dann einen Raum zwischen den beiden Säulen setzen statt einer Registerkarte (-d' ').

Verwandte Themen