分页: 1 / 2

[已解决],shell脚本 txt文件合并

发表于 : 2012-06-02 9:39
SmallV
文件A:

代码: 全选

111 90
13 25
aa 15
cc 61
45 66
ww 78
文件B:

代码: 全选

33 78
cc 22
23 89
aa 75
45 62
dd 12
如何将上面两个文件合并到文件C ,按第一个字段合并,如果A中某行第一个字段与B中第一个字段有相同的,就合为C中的一行并把这两行的第二个字段相加作为合并后的新行的第二个字段,如果A或B中第一个字段没有相同的,则直接把该行复制到C中

Re: 求助,shell脚本 txt文件合并

发表于 : 2012-06-02 9:44
YeLee
小V好,小V再见。

Re: 求助,shell脚本 txt文件合并

发表于 : 2012-06-02 9:48
YeLee
awk吧。

Re: 求助,shell脚本 txt文件合并

发表于 : 2012-06-02 9:48
qy117121
码盲路过 :em09

Re: 求助,shell脚本 txt文件合并

发表于 : 2012-06-02 9:53
SmallV
YeLee 写了:awk吧。
小生道行太浅, :em09

Re: 求助,shell脚本 txt文件合并

发表于 : 2012-06-02 9:53
SmallV
qy117121 写了:码盲路过 :em09
:em20

Re: 求助,shell脚本 txt文件合并

发表于 : 2012-06-02 10:19
mjp123

代码: 全选

awk '{n[$1]=sprintf("%s %s",n[$1],$2)} END {for (e in n) print e "    " n[e]}' a b
不知行不?

Re: 求助,shell脚本 txt文件合并

发表于 : 2012-06-02 10:22
mjp123
或者

代码: 全选

awk '{n[$1]=n[$1]+$2} END {for (e in n) print e "    " n[e]}' a b

Re: 求助,shell脚本 txt文件合并

发表于 : 2012-06-02 10:27
mjp123
要保存的话重定向。

代码: 全选

awk '{n[$1]=n[$1]+$2} END {for (e in n) print e "    " n[e] > "/tmp/1"}' a b

Re: 求助,shell脚本 txt文件合并

发表于 : 2012-06-02 10:28
SmallV
mjp123 写了:

代码: 全选

awk '{n[$1]=sprintf("%s %s",n[$1],$2)} END {for (e in n) print e "    " n[e]}' a b
不知行不?
生成的c:

代码: 全选

45     66 62
cc     61 22
ww     78
dd     12
111     90
13     25
23     89
33     78
aa     15 75
要是能把A、B中第一个字段相同的行的第二个字段加起来作为新行的第二个字段就好了

Re: 求助,shell脚本 txt文件合并

发表于 : 2012-06-02 10:32
cao627
学习 :em01

Re: 求助,shell脚本 txt文件合并

发表于 : 2012-06-02 10:32
mjp123

代码: 全选

awk '{n[$1]=n[$1]+$2} END {for (e in n) print e "    " n[e] > "/tmp/1"}' a b

Re: 求助,shell脚本 txt文件合并

发表于 : 2012-06-02 10:37
cao627

代码: 全选

awk '{n[$1]=sprintf("%s",n[$1]+$2)} END {for (e in n) print e "    " n[e]}' a b

Re: 求助,shell脚本 txt文件合并

发表于 : 2012-06-02 10:37
SmallV
mjp123 写了:

代码: 全选

awk '{n[$1]=n[$1]+$2} END {for (e in n) print e "    " n[e] > "/tmp/1"}' a b
多谢 :em11

Re: 求助,shell脚本 txt文件合并

发表于 : 2012-06-02 10:42
SmallV
cao627 写了:

代码: 全选

awk '{n[$1]=sprintf("%s",n[$1]+$2)} END {for (e in n) print e "    " n[e]}' a b
thx :em11