免费注册 查看新帖 |

Chinaunix

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

[文本处理] 求教怎么从文件B中取值去匹配文件A中的值 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-08-27 19:47 |只看该作者 |倒序浏览
本帖最后由 timdcn 于 2014-09-01 17:34 编辑

不好意思,可能我之前没表达清楚,现在更新:
cat A
12   34567891140
13   45678901150
14   34567891140

cat B
3456789
4567891

需求有3个:
1. 以12开头的
2. 第13个到17个字符是1140
3. 第4到10个字符匹配B的话
这三个条件都符合的话,不打印出来;否则打印出来。

我写了满足1和2的:
awk '{if (/^12/ && substr($0,13,4) == "1140") {next;} else print $0}' A

---------------------old------------------------------------------------------------------
cat A
12   3456789
13   4567890

cat B
3456789
4567890


求教awk怎么从文件B中取值后,去匹配文件A中相同的值??

论坛徽章:
0
2 [报告]
发表于 2014-08-27 22:34 |只看该作者
哈哈终于抢到沙发了!!!
  1. eyang@e ~/awk_test
  2. $ cat A
  3. 12   3456789
  4. 13   4567890
  5. eyang@e ~/awk_test
  6. $ cat B
  7. 3456789
  8. 4567890
  9. eyang@e ~/awk_test
  10. $ gawk 'NR == FNR{a[$0]} $2 in a{print $2}' B A
  11. 3456789
  12. 4567890

  13. eyang@e ~/awk_test
  14. $
复制代码

论坛徽章:
769
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉鸡
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥猪
日期:2014-04-22 16:13:09狮子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53处女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
3 [报告]
发表于 2014-08-27 22:34 |只看该作者
回复 1# timdcn

这个例子举得真没意思,你想要的结果是什么?

论坛徽章:
4
巳蛇
日期:2014-08-12 22:30:43双子座
日期:2014-09-29 15:50:02未羊
日期:2014-11-04 14:08:43神斗士
日期:2015-11-19 21:57:47
4 [报告]
发表于 2014-08-27 23:23 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
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
5 [报告]
发表于 2014-08-27 23:52 |只看该作者
直接用grep

论坛徽章:
13
双鱼座
日期:2013-10-23 09:30:05数据库技术版块每日发帖之星
日期:2016-04-20 06:20:00程序设计版块每日发帖之星
日期:2016-03-09 06:20:002015亚冠之塔什干火车头
日期:2015-11-02 10:07:452015亚冠之德黑兰石油
日期:2015-08-30 10:07:07数据库技术版块每日发帖之星
日期:2015-08-28 06:20:00数据库技术版块每日发帖之星
日期:2015-08-05 06:20:002015年迎新春徽章
日期:2015-03-04 09:57:09辰龙
日期:2014-12-03 14:45:52酉鸡
日期:2014-07-23 09:46:23亥猪
日期:2014-03-13 08:46:22金牛座
日期:2014-02-11 09:36:21
6 [报告]
发表于 2014-08-28 09:48 |只看该作者
grep -f B A

论坛徽章:
8
戌狗
日期:2013-10-12 11:37:19双子座
日期:2014-05-06 14:40:39巨蟹座
日期:2014-06-14 09:22:18戌狗
日期:2014-09-18 16:05:44巨蟹座
日期:2014-12-27 16:37:26酉鸡
日期:2015-01-20 18:39:022015年亚洲杯之沙特阿拉伯
日期:2015-04-20 22:38:242015亚冠之萨济拖拉机
日期:2015-06-19 16:01:03
7 [报告]
发表于 2014-08-28 10:17 |只看该作者
grep -Ff B A

论坛徽章:
0
8 [报告]
发表于 2014-09-01 15:02 |只看该作者
回复 2# ogrishman


    不行啊,我更新了需求,再帮忙看看。

论坛徽章:
0
9 [报告]
发表于 2014-09-01 15:04 |只看该作者
回复 6# bikong0411


    不行啊,我更新了需求,麻烦再看看。

论坛徽章:
6
处女座
日期:2014-04-02 16:07:17酉鸡
日期:2014-04-14 10:09:22子鼠
日期:2014-04-17 11:57:30辰龙
日期:2014-09-01 17:14:08戌狗
日期:2014-10-28 12:25:54未羊
日期:2014-11-14 11:31:58
10 [报告]
发表于 2014-09-01 16:21 |只看该作者
awk 'NR==FNR{a[$1];next} /^12/{if(1140==substr($0,13,4)){n=substr($0,4,7);if(n in a){print $0}}}' B A
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP