2014-06-23 33 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