免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: 鸟鸟不哥
打印 上一主题 下一主题

一个超复杂的筛选,没思路啊。。。 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2012-02-23 17:28 |只看该作者
楼主看看,你是不是要这样的结果?
  1. awk 'BEGIN{data2="data2";amt="NULL NULL NULL 0"}NR!=1 && c2!=$2{print b;b=""}{a=$0;c2=$2;c3=$3;getline < data2;if(c2==$2 && c3==$3)print a,$0;else{print a,amt;b=b?b RS amt FS $0:amt FS $0}}END{close(data2);print b}' data1
  2. 1 a 3 4 NULL NULL NULL 0
  3. 3 a 4 2 4 a 4 2
  4. 5 a 4 2 NULL NULL NULL 0
  5. NULL NULL NULL 0 2 a 2 4
  6. NULL NULL NULL 0 3 a 5 3
  7. 8 b 5 2 NULL NULL NULL 0
  8. NULL NULL NULL 0 8 b 6 3
复制代码

论坛徽章:
0
12 [报告]
发表于 2012-02-24 09:44 |只看该作者
回复 11# yangkyo821


    awk 'BEGIN{data2="data2";amt="NULL NULL NULL 0"}NR!=1 && c2!=$2{print b;b=""}{a=$0;c2=$2;c3=$3;getline < data2;if(c2==$2 && c3==$3)print a,$0;else{print a,amt;b=b?b RS amt FS $0:amt FS $0}}END{close(data2);print b}' data1
您里面有一句话我没看懂b?b什么意思啊,“?”在awk里面是什么意思?我没查到。。?:是匹配c吧,能帮忙解释下吗?

论坛徽章:
0
13 [报告]
发表于 2012-02-24 09:52 |只看该作者
b是一个变量名而已,b=b?b RS amt FS $0:amt FS $0是一个三元运算符,可以看这里:http://msdn.microsoft.com/zh-cn/library/zakwfxx4%28v=vs.80%29.aspx

论坛徽章:
0
14 [报告]
发表于 2012-02-24 10:03 |只看该作者
太感谢了!以前没用过这个,牛!回复 13# yangkyo821


   

论坛徽章:
0
15 [报告]
发表于 2012-02-24 10:07 |只看该作者
b是在哪里定义的啊?没找到啊。。。回复 13# yangkyo821


   

论坛徽章:
0
16 [报告]
发表于 2012-02-24 10:08 |只看该作者
awk变量使用前是不用定义的,又不是c

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
17 [报告]
发表于 2012-02-24 10:29 |只看该作者
回复 1# 鸟鸟不哥


    两个文件是一行一行对应下去匹配,还是不按行数来匹配?

论坛徽章:
0
18 [报告]
发表于 2012-02-24 10:51 |只看该作者
回复 16# yangkyo821


    b=b?b RS amt FS $0:amt FS $0
我知道不用定义,但是,我理解这句话的意思是,先判断,b等不等于b,如果等于就输入amt所定义的那种格式,并加上原文内容,如果不等于就输入amt代表的那种格式,然后空格然后原文内容。
但是,既然是比较,那么b总应该是个值吧?这块没看懂,如果您不忙的话,能讲解下吗?

论坛徽章:
0
19 [报告]
发表于 2012-02-24 11:49 |只看该作者
=是赋值不是比较,比较是==
b?判断b是否存在
这样你应该可以明白了

论坛徽章:
0
20 [报告]
发表于 2012-02-24 13:11 |只看该作者
不好意思,呵呵,确实是我看错了,sorry,多谢!回复 19# yangkyo821


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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP