我有两份文件:
File_1
Head;track1;track2;track3;
date1;vol2;vol4;vol9;
date2;vol5;vol0;vol1;
date3;vol7;vol2;vol5;File_2
Head1
trackV1 track1
trackV2 track2
trackV3 track3我想共享File_1和存储在单独文件中的结果。使用File_1,我分别写($1,$2),($1,$3),($1,$4)。新文件的名称将从第一列File_2 (trackV1、trackV2、trackV3)中检索。我想要创建这些文件:
trackV1
Head track1
date1 vol2
date2 vol5
date3 vol7trackV2
Head track2
date1 vol4
date2 vol0
date3 vol2trackV3
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]}}'谢谢你的帮助。
发布于 2012-07-24 20:10:03
把它放在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]]
}
}https://stackoverflow.com/questions/11636677
复制相似问题