我有一个文本文件包含:
Hello 4
Bye 2
Toto 2
我想将每行的第一个字符串放入MyArray1,将整数放入另一个MyArray2中。
我写了这个,但它不起作用。
#!/bin/bash
countline=$(awk '{ print $1 }' test | wc -l)
for ((i=0; i<$countline ;i=i+1))
do
MyArray1[$i]=awk '{ print $1 }' test
done
for ((i=0; i<$countline ;i=i+1))
do
MyArray2[$i]=awk '{ print $2 }' test
done
请帮帮我。
答案 0 :(得分:4)
这样就可以了:
while read -r f1 f2; do
ary1+=("$f1")
ary2+=("$f2")
done < file
$ printf "%s\n" "${ary1[@]}"
Hello
Bye
Toto
$ printf "%s\n" "${ary2[@]}"
4
2
2
或者您可以使用cut
arryone=( $(cut -d ' ' -f1 file) )
arrytwo=( $(cut -d ' ' -f2 file) )
答案 1 :(得分:2)
保持简单:
MyArray1=( $(awk '{ print $1 }' test) )
MyArray2=( $(awk '{ print $2 }' test) )
您不需要在awk的输出上进行迭代和循环,并且可以直接创建数组,如上所示。