免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 7808 | 回复: 15
打印 上一主题 下一主题

关于多个文件合并问题(已解决) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-04-09 16:36 |只看该作者 |倒序浏览
有几十个类似下面的文件
file1      
hs    203  
hf    1234
tl    256  
mas   21   

file2     
hs    65
hf    98
tl    200
mas   21

file3     
hs    99   
hf    45   
tl    23   
mas   203  

...
现在想合并这些文件,保留字段1,再取每个文件的字段2.出来结果类似:
hs    203     65    99    ...
hf    1234    98    45    ...
tl    256     200   23    ...
mas   21      21    203   ...
如果只有两个文件,知道怎么写。这么多就没头绪了
请教高手帮忙啊!

[ 本帖最后由 sby0329 于 2009-4-9 17:12 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2009-04-09 16:40 |只看该作者
join试试

论坛徽章:
0
3 [报告]
发表于 2009-04-09 16:40 |只看该作者
两个文件怎么做就怎么做嘛,大不了cat到一个文件里去
cat file1 file2 file3 file4 ........ >allfile

论坛徽章:
0
4 [报告]
发表于 2009-04-09 16:42 |只看该作者

回复 #1 sby0329 的帖子

try
  1. cat file* | awk '{a[$1]=a[$1]" "$2}END{for(i in a)print i" "a[i]}'
复制代码

[ 本帖最后由 飞鸿无痕 于 2009-4-9 16:57 编辑 ]

论坛徽章:
0
5 [报告]
发表于 2009-04-09 16:43 |只看该作者
原帖由 sby0329 于 2009-4-9 16:36 发表
有几十个类似下面的文件
file1      
hs    203  
hf    1234
tl    256  
mas   21   

file2     
hs    65
hf    98
tl    200
mas   21

file3     
hs    99   
hf    45   
tl    23 ...


是要这个结果吗???
  1. [root@zhang shell]# cat file1
  2. hs    203
  3. hf    1234
  4. tl    256
  5. mas   21
  6. [root@zhang shell]# cat file2
  7. hs    65
  8. hf    98
  9. tl    200
  10. mas   21

  11. [root@zhang shell]# cat file3
  12. hs    99
  13. hf    45
  14. tl    23
  15. mas   203
  16. [root@zhang shell]# cat file* | awk '{a[$1]=a[$1]" "$2}END{for(i in a)print i" "a[i]}'

  17. mas  21 21 203
  18. tl  256 200 23
  19. hf  1234 98 45
  20. hs  203 65 99
复制代码


只需要吧结果从定向到文件中去就可以了!

[ 本帖最后由 飞鸿无痕 于 2009-4-9 16:56 编辑 ]

论坛徽章:
0
6 [报告]
发表于 2009-04-09 16:45 |只看该作者

回复 #3 我是DBA 的帖子

cat不行的,不是我要的结果

论坛徽章:
0
7 [报告]
发表于 2009-04-09 16:50 |只看该作者

回复 #5 飞鸿无痕 的帖子

就是我要的结果,但在我这报错
cat *.txt | awk '{a[$1]=a[$1]" "$2}END{for(i in a)print i" "a}'
awk: cmd. line:1: (FILENAME=- FNR=41) fatal: attempt to use array `a' in a scalar context

论坛徽章:
0
8 [报告]
发表于 2009-04-09 16:54 |只看该作者

回复 #7 sby0329 的帖子

  1. cat file* | awk '{a[$1]=a[$1]" "$2}END{for(i in a)print i" "a[i]}'
复制代码

是数组啊,可能我没复制完全,呵呵!晕,没吧代码括起来,传上来就丢失了一部分!呵呵

[ 本帖最后由 飞鸿无痕 于 2009-4-9 16:56 编辑 ]

论坛徽章:
11
金牛座
日期:2015-03-19 16:56:22数据库技术版块每日发帖之星
日期:2016-08-02 06:20:00数据库技术版块每日发帖之星
日期:2016-04-24 06:20:00数据库技术版块每日发帖之星
日期:2016-04-13 06:20:00IT运维版块每日发帖之星
日期:2016-04-13 06:20:00数据库技术版块每日发帖之星
日期:2016-02-03 06:20:00数据库技术版块每日发帖之星
日期:2015-08-06 06:20:00季节之章:春
日期:2015-03-27 15:54:57羊年新春福章
日期:2015-03-27 15:54:37戌狗
日期:2015-03-19 16:56:41数据库技术版块每日发帖之星
日期:2016-08-18 06:20:00
9 [报告]
发表于 2009-04-09 16:54 |只看该作者

回复 #7 sby0329 的帖子

他没用code把代码弄起来..所以你复制过去是有问题的..

  1. awk '{a[$1]=a[$1]" "$2}END{for(i in a)print i" "a[i]}'
复制代码

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
10 [报告]
发表于 2009-04-09 16:57 |只看该作者
try:
  1. paste file1 file2 file3 |awk '{for (i=3;i<=NF;i+=2) $i="";print}'
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP