免费注册 查看新帖 |

Chinaunix

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

[文本处理] awk两个文本匹配问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-02-20 16:18 |只看该作者 |倒序浏览
如题:
文件1
12 13 jljlj jhub .....
12 11 jljlj jhub  .....
13 15 huhk jlji .....
14 16 jihgj jil .....
文件2
12 13 huhuhurf iijijij .........
13 15 huhuhuj iijijij .........
14 16 huhuhus iijijij .........
12 11 huhuhus iijijij .........
.......是很多字段的意思
想得到结果
12 13 jljlj jhub ..... huhuhurf iijijij .........
12 11 jljlj jhub  .....huhuhus iijijij .........
...
...
awk怎么写?

论坛徽章:
39
辰龙
日期:2013-08-21 15:45:192015亚冠之广州富力
日期:2015-05-12 16:34:52亥猪
日期:2015-03-03 17:22:00申猴
日期:2015-03-03 17:21:37未羊
日期:2014-10-10 13:45:41戌狗
日期:2014-06-17 09:53:29巨蟹座
日期:2014-06-12 23:17:17双鱼座
日期:2014-06-10 12:42:44寅虎
日期:2014-06-09 12:52:172015亚冠之卡尔希纳萨夫
日期:2015-05-24 15:24:35黄金圣斗士
日期:2015-12-02 17:25:0815-16赛季CBA联赛之吉林
日期:2017-06-24 16:43:52
2 [报告]
发表于 2013-02-20 17:00 |只看该作者
本帖最后由 关阴月飞 于 2013-02-20 17:02 编辑

刚刚在另一个贴子中看到@yestreenstars写的这个:搬运给LZ参考:
  1. awk 'NR==FNR{for(i=2;i<=NF;i++)a[$1]=a[$1]!=""?a[$1]"\t"$i:$i;b=NF-1;next}{if($1 in a)print $0"\t"a[$1];else{for(i=1;i<=b;i++)$0=$0"\t*";print $0}}'
复制代码

论坛徽章:
13
丑牛
日期:2013-08-16 15:08:22技术图书徽章
日期:2013-11-26 10:13:40双鱼座
日期:2013-11-08 15:03:26戌狗
日期:2013-11-08 13:52:30技术图书徽章
日期:2013-11-05 14:06:30戌狗
日期:2013-10-31 11:45:42CU十二周年纪念徽章
日期:2013-10-24 15:41:34天秤座
日期:2013-10-11 14:55:08子鼠
日期:2013-09-26 19:36:35水瓶座
日期:2013-09-26 17:44:56午马
日期:2013-08-26 10:24:23丑牛
日期:2013-08-19 14:43:22
3 [报告]
发表于 2013-02-20 17:18 |只看该作者
  1. awk 'NR==FNR{a[$1$2]=$0}NR>FNR{b=$1$2;$1="";$2="";if(a[b])print a[b]$0}' file1 file2
复制代码

论坛徽章:
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
4 [报告]
发表于 2013-02-20 17:21 |只看该作者
这个,好像,貌似,应该刚刚月经过吧。

论坛徽章:
13
丑牛
日期:2013-08-16 15:08:22技术图书徽章
日期:2013-11-26 10:13:40双鱼座
日期:2013-11-08 15:03:26戌狗
日期:2013-11-08 13:52:30技术图书徽章
日期:2013-11-05 14:06:30戌狗
日期:2013-10-31 11:45:42CU十二周年纪念徽章
日期:2013-10-24 15:41:34天秤座
日期:2013-10-11 14:55:08子鼠
日期:2013-09-26 19:36:35水瓶座
日期:2013-09-26 17:44:56午马
日期:2013-08-26 10:24:23丑牛
日期:2013-08-19 14:43:22
5 [报告]
发表于 2013-02-20 17:29 |只看该作者
回复 4# seesea2517


    现在论坛贴子都大同小异,我也逛得没意思

论坛徽章:
0
6 [报告]
发表于 2013-02-20 17:32 |只看该作者
回复 3# 代号:军刀

能简单解释一下这个awk语句的意思吗?


   

论坛徽章:
13
丑牛
日期:2013-08-16 15:08:22技术图书徽章
日期:2013-11-26 10:13:40双鱼座
日期:2013-11-08 15:03:26戌狗
日期:2013-11-08 13:52:30技术图书徽章
日期:2013-11-05 14:06:30戌狗
日期:2013-10-31 11:45:42CU十二周年纪念徽章
日期:2013-10-24 15:41:34天秤座
日期:2013-10-11 14:55:08子鼠
日期:2013-09-26 19:36:35水瓶座
日期:2013-09-26 17:44:56午马
日期:2013-08-26 10:24:23丑牛
日期:2013-08-19 14:43:22
7 [报告]
发表于 2013-02-20 17:34 |只看该作者
回复 6# todayhero


    就是满足楼主要的结果

论坛徽章:
0
8 [报告]
发表于 2013-02-20 17:38 |只看该作者
回复 7# 代号:军刀

这个我知道,我想知道的是,执行过程的原理。

如$1$2做为下标将第一文件存起来,然后NR>FNR,之后的实在理解不出来。


   

论坛徽章:
13
丑牛
日期:2013-08-16 15:08:22技术图书徽章
日期:2013-11-26 10:13:40双鱼座
日期:2013-11-08 15:03:26戌狗
日期:2013-11-08 13:52:30技术图书徽章
日期:2013-11-05 14:06:30戌狗
日期:2013-10-31 11:45:42CU十二周年纪念徽章
日期:2013-10-24 15:41:34天秤座
日期:2013-10-11 14:55:08子鼠
日期:2013-09-26 19:36:35水瓶座
日期:2013-09-26 17:44:56午马
日期:2013-08-26 10:24:23丑牛
日期:2013-08-19 14:43:22
9 [报告]
发表于 2013-02-20 17:45 |只看该作者
回复 8# todayhero


    NR>FNR,读取就是另外一个文件了,第二次的时候第一二列不需要输出,所以就置空了,后面就是根据和NR==FNR数组元素相同的就输出

论坛徽章:
0
10 [报告]
发表于 2013-02-20 17:52 |只看该作者
回复 9# 代号:军刀




你的语句输出与LZ要求的不一致.

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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP