首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AWK -文件共享

AWK -文件共享
EN

Stack Overflow用户
提问于 2012-07-24 18:02:34
回答 1查看 132关注 0票数 2

我有两份文件:

File_1

代码语言:javascript
复制
Head;track1;track2;track3;
date1;vol2;vol4;vol9;
date2;vol5;vol0;vol1;
date3;vol7;vol2;vol5;

File_2

代码语言:javascript
复制
Head1
trackV1 track1
trackV2 track2
trackV3 track3

我想共享File_1和存储在单独文件中的结果。使用File_1,我分别写($1,$2),($1,$3),($1,$4)。新文件的名称将从第一列File_2 (trackV1、trackV2、trackV3)中检索。我想要创建这些文件:

trackV1

代码语言:javascript
复制
Head track1
date1 vol2
date2 vol5
date3 vol7

trackV2

代码语言:javascript
复制
Head track2
date1 vol4
date2 vol0
date3 vol2

trackV3

代码语言:javascript
复制
Head track3
date1 vol9
date2 vol1
date3 vol5

我尝试过不同的解决方案,但不起作用:

代码语言:javascript
复制
awk 'BEGIN { while(getline < "File_1"){split($0, tab, ";"); print  $(getline a < "File_2") > tab[1] tab[2]}}'

谢谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-24 20:10:03

把它放在foo.awk里。用法(注意文件的顺序)

awk -f foo.awk File_2 File_1

代码语言:javascript
复制
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]]
    }
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11636677

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档