3

我有一个包含以下内容的文本文件:

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

请帮我。

4

2 回答 2

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) )
于 2013-07-09T19:40:34.560 回答
2

把事情简单化:

MyArray1=( $(awk '{ print $1 }' test) )
MyArray2=( $(awk '{ print $2 }' test) )

您不需要对 awk 的输出进行迭代和循环,并且可以直接创建您的数组,如上所示。

于 2013-07-09T19:35:55.157 回答