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

sh/bash/dash/ksh/zsh等Shell脚本
头像
SmallV
论坛版主
帖子: 9017
注册时间: 2011-01-26 17:52
来自: 万林丛中的一抹浓绿,夹带落日余晖的安祥

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

#1

帖子 SmallV » 2012-06-02 9:39

文件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中
Just do it, you will succeed!
头像
YeLee
论坛版主
帖子: 26406
注册时间: 2008-08-13 8:48
系统: Fundu i64
来自: 东海硇州,一双管钥。
联系:

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

#2

帖子 YeLee » 2012-06-02 9:44

小V好,小V再见。
◎当我站在道德的高度上俯视别人的时候,发现自己是多么渺小。
♥执着但不偏激,反对而不排斥,坚决捍卫矛盾体的存在方式。
★★★天气预报★★★
fcitx-yatable一个可以使用的码表输入法
[教程]几个实例攻克软件编译难关
Gentoo Development Guide
字体相关
头像
YeLee
论坛版主
帖子: 26406
注册时间: 2008-08-13 8:48
系统: Fundu i64
来自: 东海硇州,一双管钥。
联系:

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

#3

帖子 YeLee » 2012-06-02 9:48

awk吧。
◎当我站在道德的高度上俯视别人的时候,发现自己是多么渺小。
♥执着但不偏激,反对而不排斥,坚决捍卫矛盾体的存在方式。
★★★天气预报★★★
fcitx-yatable一个可以使用的码表输入法
[教程]几个实例攻克软件编译难关
Gentoo Development Guide
字体相关
头像
qy117121
论坛版主
帖子: 50587
注册时间: 2007-12-14 13:40
系统: Winbuntu
来自: 志虚国乌由市
联系:

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

#4

帖子 qy117121 » 2012-06-02 9:48

码盲路过 :em09
渠月 · QY   
本人只会灌水,不负责回答问题
无聊可以点一下→ http://u.nu/ubuntu

邮箱 [email protected]
头像
SmallV
论坛版主
帖子: 9017
注册时间: 2011-01-26 17:52
来自: 万林丛中的一抹浓绿,夹带落日余晖的安祥

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

#5

帖子 SmallV » 2012-06-02 9:53

YeLee 写了:awk吧。
小生道行太浅, :em09
Just do it, you will succeed!
头像
SmallV
论坛版主
帖子: 9017
注册时间: 2011-01-26 17:52
来自: 万林丛中的一抹浓绿,夹带落日余晖的安祥

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

#6

帖子 SmallV » 2012-06-02 9:53

qy117121 写了:码盲路过 :em09
:em20
Just do it, you will succeed!
头像
mjp123
帖子: 703
注册时间: 2009-04-09 15:06

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

#7

帖子 mjp123 » 2012-06-02 10:19

代码: 全选

awk '{n[$1]=sprintf("%s %s",n[$1],$2)} END {for (e in n) print e "    " n[e]}' a b
不知行不?
头像
mjp123
帖子: 703
注册时间: 2009-04-09 15:06

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

#8

帖子 mjp123 » 2012-06-02 10:22

或者

代码: 全选

awk '{n[$1]=n[$1]+$2} END {for (e in n) print e "    " n[e]}' a b
头像
mjp123
帖子: 703
注册时间: 2009-04-09 15:06

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

#9

帖子 mjp123 » 2012-06-02 10:27

要保存的话重定向。

代码: 全选

awk '{n[$1]=n[$1]+$2} END {for (e in n) print e "    " n[e] > "/tmp/1"}' a b
头像
SmallV
论坛版主
帖子: 9017
注册时间: 2011-01-26 17:52
来自: 万林丛中的一抹浓绿,夹带落日余晖的安祥

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

#10

帖子 SmallV » 2012-06-02 10:28

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中第一个字段相同的行的第二个字段加起来作为新行的第二个字段就好了
Just do it, you will succeed!
cao627
帖子: 992
注册时间: 2007-12-05 10:57
系统: ubuntu14.04
来自: 金山

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

#11

帖子 cao627 » 2012-06-02 10:32

学习 :em01
头像
mjp123
帖子: 703
注册时间: 2009-04-09 15:06

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

#12

帖子 mjp123 » 2012-06-02 10:32

代码: 全选

awk '{n[$1]=n[$1]+$2} END {for (e in n) print e "    " n[e] > "/tmp/1"}' a b
cao627
帖子: 992
注册时间: 2007-12-05 10:57
系统: ubuntu14.04
来自: 金山

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

#13

帖子 cao627 » 2012-06-02 10:37

代码: 全选

awk '{n[$1]=sprintf("%s",n[$1]+$2)} END {for (e in n) print e "    " n[e]}' a b
头像
SmallV
论坛版主
帖子: 9017
注册时间: 2011-01-26 17:52
来自: 万林丛中的一抹浓绿,夹带落日余晖的安祥

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

#14

帖子 SmallV » 2012-06-02 10:37

mjp123 写了:

代码: 全选

awk '{n[$1]=n[$1]+$2} END {for (e in n) print e "    " n[e] > "/tmp/1"}' a b
多谢 :em11
Just do it, you will succeed!
头像
SmallV
论坛版主
帖子: 9017
注册时间: 2011-01-26 17:52
来自: 万林丛中的一抹浓绿,夹带落日余晖的安祥

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

#15

帖子 SmallV » 2012-06-02 10:42

cao627 写了:

代码: 全选

awk '{n[$1]=sprintf("%s",n[$1]+$2)} END {for (e in n) print e "    " n[e]}' a b
thx :em11
Just do it, you will succeed!
回复