2

私は2つのファイルを持っています:

ファイル_1

Head;track1;track2;track3;
date1;vol2;vol4;vol9;
date2;vol5;vol0;vol1;
date3;vol7;vol2;vol5;

ファイル_2

Head1
trackV1 track1
trackV2 track2
trackV3 track3

File_1 と別のファイルに保存された結果を共有したい。File_1 では ($1, $2), ($1, $3), ($1, $4) と分けて書きます。新しいファイルの名前は、最初の列 File_2 (trackV1、trackV2、trackV3) から取得されます。これらのファイルを作成したい:

トラックV1

Head track1
date1 vol2
date2 vol5
date3 vol7

トラックV2

Head track2
date1 vol4
date2 vol0
date3 vol2

トラックV3

Head track3
date1 vol9
date2 vol1
date3 vol5

さまざまな解決策を試しましたが、うまくいきません:

awk 'BEGIN { while(getline < "File_1"){split($0, tab, ";"); print  $(getline a < "File_2") > tab[1] tab[2]}}'

ご協力ありがとうございました。

4

1 に答える 1

3

入れfoo.awkます。使用法 (ファイルの順序に注意してください)
awk -f foo.awk File_2 File_1

BEGIN {
    # fields separator
    FS=";"
}

# skip a first line in the "names file"
NR==FNR && NR==1 {next}

NR==FNR {
    # read "names file"
    split($1, aux, " ")
    name[aux[2]]=aux[1]
    next
}

FNR!=NR && FNR==1{
    # read a header of the "data file" and create output files
    split($0, head)
    for (i=2; i<NF; i++) {
       print "Head", head[i] > name[head[i]]
    }
    next
}

{
    # populate output files
    for (i=2; i<NF; i++) {
       print $1, $i >> name[head[i]]
    }
}
于 2012-07-24T20:10:03.877 に答える