免费注册 查看新帖 |

Chinaunix

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

[数值计算] 急啊,这个shell怎们写啊 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-05-23 00:39 |只看该作者 |倒序浏览

如果b.txt中的姓名这一列不在a.txt第二列中,则把b.txt中的这一行追加到a.txt中
a.txt
日期   姓名 号码
20140101|aaa|7
20140101|aab|8
20140101|aac|7
20140101|aad|2


b.txt
日期   
20140302|aaa|1
20140201|bbc|3
20140201|bbb|3
20140401|aad|4

结果如下:
20140101|aaa|7
20140101|aab|8
20140101|aac|7
20140101|aad|2
20140201|bbc|3
20140401|bbb|3

论坛徽章:
33
荣誉会员
日期:2011-11-23 16:44:17天秤座
日期:2014-08-26 16:18:20天秤座
日期:2014-08-29 10:12:18丑牛
日期:2014-08-29 16:06:45丑牛
日期:2014-09-03 10:28:58射手座
日期:2014-09-03 16:01:17寅虎
日期:2014-09-11 14:24:21天蝎座
日期:2014-09-17 08:33:55IT运维版块每日发帖之星
日期:2016-04-17 06:23:27操作系统版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-24 06:20:0015-16赛季CBA联赛之天津
日期:2016-05-06 12:46:59
2 [报告]
发表于 2014-05-23 08:30 |只看该作者
直接把两个文件合并去重不就行了?

论坛徽章:
7
数据库技术版块每日发帖之星
日期:2015-08-08 06:20:00数据库技术版块每日发帖之星
日期:2015-08-29 06:20:00数据库技术版块每日发帖之星
日期:2015-08-29 06:20:00数据库技术版块每日发帖之星
日期:2015-09-18 06:20:00数据库技术版块每周发帖之星
日期:2015-11-06 19:56:51数据库技术版块每日发帖之星
日期:2016-01-22 06:20:00数据库技术版块每日发帖之星
日期:2016-02-05 06:20:00
3 [报告]
发表于 2014-05-23 08:43 |只看该作者
  1. hero@hero-VirtualBox:~/gettext$ cat a.txt
  2. 20140101|aaa|7
  3. 20140101|aab|8
  4. 20140101|aac|7
  5. 20140101|aad|2
  6. hero@hero-VirtualBox:~/gettext$ cat b.txt
  7. 20140302|aaa|1
  8. 20140201|bbc|3
  9. 20140201|bbb|3
  10. 20140401|aad|4
  11. hero@hero-VirtualBox:~/gettext$ cat a.txt b.txt | awk -F"|" '!a[$2]++'
  12. 20140101|aaa|7
  13. 20140101|aab|8
  14. 20140101|aac|7
  15. 20140101|aad|2
  16. 20140201|bbc|3
  17. 20140201|bbb|3
  18. hero@hero-VirtualBox:~/gettext$
复制代码
回复 1# wzltian


   

论坛徽章:
32
处女座
日期:2013-11-20 23:41:20双子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00处女座
日期:2014-07-22 17:30:47狮子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥猪
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58处女座
日期:2014-12-02 09:17:52程序设计版块每日发帖之星
日期:2015-06-16 22:20:002015亚冠之塔什干火车头
日期:2015-06-20 23:28:22
4 [报告]
发表于 2014-05-23 08:58 |只看该作者
楼上正解~{:2_172:}

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
5 [报告]
发表于 2014-05-23 09:59 |只看该作者
  1. awk 'BEGIN{FS=OFS="|"}NR==FNR{a[$2]=$0;print}NR>FNR{if(!a[$2])print}' a.txt b.txt
复制代码

论坛徽章:
93
2015年辞旧岁徽章
日期:2019-10-10 10:51:15CU大牛徽章
日期:2014-02-21 14:21:56CU十二周年纪念徽章
日期:2020-10-15 16:55:55CU大牛徽章
日期:2014-02-21 14:22:07羊年新春福章
日期:2019-10-10 10:51:39CU大牛徽章
日期:2019-10-10 10:55:38季节之章:春
日期:2020-10-15 16:57:40ChinaUnix元老
日期:2019-10-10 10:54:42季节之章:冬
日期:2019-10-10 10:57:17CU大牛徽章
日期:2014-02-21 14:22:52CU大牛徽章
日期:2014-03-13 10:40:30CU大牛徽章
日期:2014-02-21 14:23:15
6 [报告]
发表于 2014-05-23 14:30 |只看该作者
回复 1# wzltian

来晚了,来个不一样的:
  1. [seesea@UC ~]$ head a.txt b.txt
  2. ==> a.txt <==
  3. 20140101|aaa|7
  4. 20140101|aab|8
  5. 20140101|aac|7
  6. 20140101|aad|2

  7. ==> b.txt <==
  8. 20140302|aaa|1
  9. 20140201|bbc|3
  10. 20140201|bbb|3
  11. 20140401|aad|4
  12. [seesea@UC ~]$ grep -vf <(cut -d'|' -f2 a.txt) b.txt >> a.txt
  13. [seesea@UC ~]$ cat a.txt
  14. 20140101|aaa|7
  15. 20140101|aab|8
  16. 20140101|aac|7
  17. 20140101|aad|2
  18. 20140201|bbc|3
  19. 20140201|bbb|3
复制代码

论坛徽章:
0
7
发表于 2014-05-23 17:35
回复 6# seesea2517
   这条好像很有效率

论坛徽章:
0
8 [报告]
发表于 2014-05-23 17:36 |只看该作者
这里高手多啊,写出来的这么牛!

论坛徽章:
0
9
发表于 2014-05-23 17:38
回复 6# seesea2517
   请教下,如果我的内存比较小,比如只有1G,但上面a.txt 和b.txt 加起来有2g,会不会溢出啊?

   

论坛徽章:
0
10 [报告]
发表于 2014-05-23 17:38 |只看该作者
回复 5# Shell_HAT

谢谢啊,请教下,如果我的内存比较小,比如只有1G,但上面a.txt 和b.txt 加起来有2g,会不会溢出啊?


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP