awk命令结果进入数组

时间:2013-07-09 19:33:38

标签: arrays linux bash

我有一个文本文件包含:

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

请帮帮我。

2 个答案:

答案 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的输出上进行迭代和循环,并且可以直接创建数组,如上所示。