awkとbashを使って配列を初期化する方法は?

awkとbashを使って配列を初期化する方法は?

テキストファイルの最初の行の値を配列に保存しようとしています。これが私が今まで持っているものです:

arr_values=()

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

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

awk配列を初期化するとエラーが発生します。主に、外部配列を初期化するために配列を使用する方法がわからないためです。提案はありますかawk?ありがとうございます。

クロスポストを作成して申し訳ありません。希望の答えが得られませんでした。

ベストアンサー1

文脈を説明すると、より良い答えを得ることができます。なぜ awk...データの最初の行はどのように見えますか?

フィールド区切り文字を変更していないため、スペースで区切られた項目行を扱っているとします。以下はあなたの要件を完全に満たしています。

arr_values=()

read -ra arr_values <<< $(head -n 1 file.txt)

for s in "${arr_values[@]}"; do
    echo "$s"
done

すべての操作はreadコマンドで実行されます。配列の値を複数回処理する必要がない場合は、次のようにします。

set -f    # disable globbing, in case the lines contain wildcard characters
for s in $(head -n 1 file.txt); do
    set +f
    echo "$s"
done
set +f

これにより、スペースで区切られたスペース以外の各フィールド項目がループに入り、ループを$s通過します。

おすすめ記事