2016-10-01 6 views
0

後でHTMLを生成するために、各フィールドに変数を割り当てる必要があります。 私のデータファイルは、次のようになりますAWK:各フィールドに変数を割り当てる

field1;field2;field3    # << RECORD 1 
this;is;second;record    # << RECORD 2 

レコード番号に基づいて、各レコードの配列を生成する方法はありますか? arrayNR好きなので:GNUと

array1[0] = "field1"; array1[1] = "field2"; 
    ^record number 
array2[0] = "this"; array2[1] = "is"; array2[2] = "second"; array2[3] = "record" 
    ^record number 
+0

標準のAwkを使用する必要がある場合は、各行を配列に割り当てて、必要なときに再度分割するのは意味がありませんか?または、2行目の3番目の値を識別する「2:3」などのキーを持つ連想配列を作成するだけです。 yuがこれを必要とする場合は、詳細を記した回答を投稿できますが、私が推奨する解決策はAwkから切り離すことです。 – tripleee

答えて

2

は多次元配列をawkはとsplit、例えば、

$ awk '{array[NR][1]; split($0,array[NR],";"); for(i in array[NR]) print array[NR][i]}' file 

{ 
    array[NR][1]    # initiate array 
    split($0,array[NR],";") # split to array 
     for(i in array[NR]) # iterate thru all array elements 
      print array[NR][i] # output array value 
} 
+0

+1、 'array [NR] [1]'トリックは、splitコマンドの前に配列を初期化します。そうでなければ、splitは '第2引数は配列ではない' – user000001

0

あなたは多次元配列を持つことができますawkは:

gawk -F\; '{for(i=1;i<=NF;i++)a[NR][i]=$i}END {for(i in a) for (j in a[i]) print a[i][j]}' file 

あなたが使用することができ、他のawksで:ヌーを使用して

awk -F\; '{for(i=1;i<=NF;i++)a[NR,i]=$i}END {for(i in a) {split(i,b,SUBSEP); print a[b[1],b[2]]}}' file 
関連する問題