免费注册 查看新帖 |

Chinaunix

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

请教 awk 如何判断某个域不在某文件中 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-07-22 18:29 |只看该作者 |倒序浏览
cat 1.dat

a1 a2 a3
b1 b2 b3
c1 c2 c3

由另外一个黑名单文件 filter.txt
内容为 a2

我想要判断1.dat的$2 是否在filter.txt里,如果不存在则print $0,否则跳过

在grep里可以 -vf ,但是awk 里怎么对某个字段进行类似操作呢?

请大家指教,谢谢

论坛徽章:
0
2 [报告]
发表于 2008-07-22 18:33 |只看该作者
  1. awk 'NR==FNR{a[$0]=$0}NR!=FNR{if(!a[$2])print }' filter.txt 1.dat
复制代码

[ 本帖最后由 merlin852 于 2008-7-22 18:38 编辑 ]

论坛徽章:
0
3 [报告]
发表于 2008-07-22 18:40 |只看该作者
  1. awk 'NR==FNR{!a[$0]++} NR>FNR{if(!a[$2])print}' filter.txt 1.dat
复制代码

论坛徽章:
0
4 [报告]
发表于 2008-07-22 18:51 |只看该作者
感谢两位,我问的问题是管道中的某一步
cat xxx|xxx|xxx|然后 awk ....   请教这种情况下怎么把 filter.txt 引入呢?

论坛徽章:
0
5 [报告]
发表于 2008-07-22 19:03 |只看该作者

回复 #4 errmood 的帖子

cat xxx|xxx|xxx| >1.dat;awk ...

论坛徽章:
0
6 [报告]
发表于 2008-07-22 22:27 |只看该作者
非常感谢:wink:

论坛徽章:
0
7 [报告]
发表于 2008-07-22 23:20 |只看该作者
追问一句,如果是正则匹配而不是完全匹配呢?

论坛徽章:
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
8 [报告]
发表于 2008-07-23 14:11 |只看该作者

回复 #7 errmood 的帖子

你的正则匹配要求是什么?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP