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 回答