免费注册 查看新帖 |

Chinaunix

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

[文本处理] 请教各位一个比较麻烦的文本处理哈,2个文件第一列相同然后打印file1和file2的某列。 [复制链接]

论坛徽章:
2
狮子座
日期:2014-08-15 00:24:232015元宵节徽章
日期:2015-03-06 15:52:30
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-09-18 16:45 |只看该作者 |倒序浏览
本帖最后由 djzhangxing 于 2014-09-18 16:46 编辑
  1. cat file1
  2. 10.0.86.10        proxy 10.0.86.1
  3. 10.0.86.11        proxy 10.0.86.1
  4. 10.0.86.12        proxy 10.0.86.1
  5. 10.0.86.13        proxy 10.0.86.1

  6. cat file2
  7. 10.0.86.13  gateway 10.0.86.254
  8. 10.0.86.12  gateway 10.0.86.1
  9. 10.0.86.11  gateway 10.0.86.1
复制代码
想要的结果
file1中第一列IP如果能匹配到file2,就打印file1$0和file2的$2,$3,若没有就为NULL
  1. 10.0.86.10        proxy 10.0.86.1                null
  2. 10.0.86.11        proxy 10.0.86.1                gateway 10.0.86.1
  3. 10.0.86.12        proxy 10.0.86.1                gateway 10.0.86.1
  4. 10.0.86.13        proxy 10.0.86.1                gateway 10.0.86.254
复制代码
两个文件第一列排序是混乱的,怎么能完成以上的结果呢,好难~~求助!

论坛徽章:
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
2 [报告]
发表于 2014-09-18 16:50 |只看该作者

论坛徽章:
8
技术图书徽章
日期:2013-08-22 11:21:28未羊
日期:2015-01-19 22:22:25巳蛇
日期:2014-08-11 16:53:08子鼠
日期:2014-05-29 09:04:44摩羯座
日期:2014-04-11 14:15:07丑牛
日期:2014-01-24 12:41:28金牛座
日期:2013-11-21 17:38:28射手座
日期:2015-01-21 08:50:32
3 [报告]
发表于 2014-09-18 16:53 |只看该作者
关联数组咯~

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:58:11
4 [报告]
发表于 2014-09-18 17:01 |只看该作者
  1. [root@localhost ~]# awk 'NR==FNR{a[$1]=$0;next;}{if($1 in a)print a[$1],"\t",$2,$3; a[$1]="deleted"}END{for(i in a)if(a[i]!="deleted")print a[i],"\tnull"}' file1 file2
  2. 10.0.86.13        proxy 10.0.86.1        gateway 10.0.86.254
  3. 10.0.86.12        proxy 10.0.86.1        gateway 10.0.86.1
  4. 10.0.86.11        proxy 10.0.86.1        gateway 10.0.86.1
  5. 10.0.86.10        proxy 10.0.86.1       null
  6. [root@localhost ~]# head file1 file2
  7. ==> file1 <==
  8. 10.0.86.10        proxy 10.0.86.1
  9. 10.0.86.11        proxy 10.0.86.1
  10. 10.0.86.12        proxy 10.0.86.1
  11. 10.0.86.13        proxy 10.0.86.1

  12. ==> file2 <==
  13. 10.0.86.13  gateway 10.0.86.254
  14. 10.0.86.12  gateway 10.0.86.1
  15. 10.0.86.11  gateway 10.0.86.1
复制代码
如果不符合要求,请忽略

论坛徽章:
2
摩羯座
日期:2014-11-03 15:28:56卯兔
日期:2015-01-04 17:20:51
5 [报告]
发表于 2014-09-18 17:21 |只看该作者
  1. awk 'NR==FNR{a[$1]=$2" "$3;next}a[$1]{print $0,a[$1];next}{print $0,"null"}' file2 file1

  2. 10.0.86.10        proxy 10.0.86.1 null
  3. 10.0.86.11        proxy 10.0.86.1 gateway 10.0.86.1
  4. 10.0.86.12        proxy 10.0.86.1 gateway 10.0.86.1
  5. 10.0.86.13        proxy 10.0.86.1 gateway 10.0.86.254
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP