bashで最も簡単な方法は、配列を使用することです:
declare -a arrayxyz
arrayxyz=($xyz)
printf "x %s y %s z %s\n" "${arrayxyz[0]}" "${arrayxyz[1]}" "${arrayxyz[2]}"
(ノート括弧の追加...)
デフォルトIFS
(内部フィールドセパレータ)に依存しています単語を別々の配列要素に分割して、x
,y
およびz
を与えます。
、XにYをファイル全体を読み取るために、Zアレイ
あなたは短いスクリプトでこれを行うことができます。
#!/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
例入力
$ cat dat/xyz.txt
0.29399995009104407 0.5004167755444844 -11.279416799545288
0.29399995009104407 0.5004167755444844 -11.279416799545288
0.29399995009104407 0.5004167755444844 -11.279416799545288
出力例
$ 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
それは私に与えX 0.29399995009104407 [0]、Y 0.29399995009104407 [1] Z 0.29399995009104407 [2]最後に[0]を取り払うの方法はありますか? – wthimdh
確かに、それは省略された '{...}'中括弧(私の悪い) ':)'あなたに完全な例を教えてください。 –