Die einfachste Art und Weise in der Bash ist einen Array zu verwenden:
declare -a arrayxyz
arrayxyz=($xyz)
printf "x %s y %s z %s\n" "${arrayxyz[0]}" "${arrayxyz[1]}" "${arrayxyz[2]}"
(Note die Zugabe von Klammern ...)
die auf dem Standard IFS
(interne Feldtrenn) verlassen wird Um die Wörter in separate Array-Elemente zu teilen, geben Sie x
, y
und z
.
Um eine gesamte Datei in X, Y, Z-Arrays
Sie können dies mit einem kurzen Skript zu lesen:
#!/bin/bash
fname="${1:-/dev/stdin}"
declare -a arrx ## declare x, y, z arrays
declare -a arry
declare -a arrz
while read -r x y z; do ## read file into x, y, z arrays
arrx+=($x)
arry+=($y)
arrz+=($z)
done <"$fname"
## output x, y, z values read
for ((i = 0; i < ${#arrx[@]}; i++)); do
printf "array[%d] x: %-20s y: %-20s z: %-20s\n" \
"$i" "${arrx[i]}" "${arry[i]}" "${arrz[i]}"
done
Beispiel Eingabe
$ cat dat/xyz.txt
0.29399995009104407 0.5004167755444844 -11.279416799545288
0.29399995009104407 0.5004167755444844 -11.279416799545288
0.29399995009104407 0.5004167755444844 -11.279416799545288
Beispiel Ausgang
$ bash readxyz.sh dat/xyz.txt
array[0] x: 0.29399995009104407 y: 0.5004167755444844 z: -11.279416799545288
array[1] x: 0.29399995009104407 y: 0.5004167755444844 z: -11.279416799545288
array[2] x: 0.29399995009104407 y: 0.5004167755444844 z: -11.279416799545288
Es gibt mir x ,29399995009104407 [0] y ,29399995009104407 [1] z 0,29399995009104407 [2] Gibt es eine Möglichkeit loszuwerden [0] am Ende? – wthimdh
sicher, das war zu tun ausgelassen '{...}' geschweiften Klammern (mein schlechtes) ':)' Lassen Sie mich Ihnen ein komplettes Beispiel geben. –