2014-06-23 38 views
0

我想将文本文件第一行的值存储到数组中。以下是我迄今为止:如何使用awk和bash初始化数组?

arr_values=() 

awk ' 
    NR==1 { 
      for (i=0; i<=NF; i++) 
       'arr_values[i]'=$i 
      }' file.txt 

for ((i=0; i<${#arr_values[@]}; i++)) 
do 
    echo arr_values[i] 
done 

我与初始化数组,主要是因为我不知道怎么用awk初始化外部阵列得到一个错误。任何建议(仅限于awk)?谢谢。

回答

2

你可以这样做:

read -a array <<< $(head -n 1 file) 

echo ${array[0]} 
echo ${array[1]} 
+0

我的解决方案有什么区别?期待过程替代,这里不需要。 – hek2mgl

+0

矿井工程! ;-) –

+0

不重要的是,你的管道启动了一个短暂的子shell。 –

1

你也许可以简单地只是做

read -ra arr_values < file.txt 

这将只处理第一线,均匀地分割像awk做;将其保存到arr_values。无需使用外部二进制命令进行分支。

+0

为什么'\ t'? OP没有指定,并且默认'awk'分割空白。 – dogbane

+0

@dogbane我并不总是记得这一点。只是测试了一下,发现我错了,所以在发表评论前几秒钟就做了编辑。 – konsolebox