免费注册 查看新帖 |

Chinaunix

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

awk 有没有类似于grep的功能? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-12-17 13:35 |只看该作者 |倒序浏览
我是这样的,用grep 找出了一堆结果是

文件名:行数: 结果

产生了一个这样的文件,现在我还需对这里面的结果进行分析,找出含有别的关键字的记录

因为查找范围应该是在上述 "结果" 里面进行查找,如果直接grep 上面的 "文件名" "行数" 会对我的结果进行干扰。

所以要用awk 而awk是否也具备 grep 的功能? 我希望支持 grep -f grep -v 还有grep -i的功能?

如何实现?

谢谢!

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
2 [报告]
发表于 2007-12-17 13:42 |只看该作者
读基础12篇或新手导航,以及shell版水平测试

论坛徽章:
0
3 [报告]
发表于 2007-12-17 14:01 |只看该作者
楼上不能老是这样,我基础差,人又比较笨,就教教吧,

论坛徽章:
0
4 [报告]
发表于 2007-12-17 14:03 |只看该作者
实在没看懂你为什么不用grep的原因

论坛徽章:
23
15-16赛季CBA联赛之吉林
日期:2017-12-21 16:39:27白羊座
日期:2014-10-27 11:14:37申猴
日期:2014-10-23 08:36:23金牛座
日期:2014-09-30 08:26:49午马
日期:2014-09-29 09:40:16射手座
日期:2014-11-25 08:56:112015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:0315-16赛季CBA联赛之山东
日期:2017-12-21 16:39:1915-16赛季CBA联赛之广东
日期:2016-01-19 13:33:372015亚冠之山东鲁能
日期:2015-10-13 09:39:062015亚冠之西悉尼流浪者
日期:2015-09-21 08:27:57
5 [报告]
发表于 2007-12-17 14:10 |只看该作者
说说原始的需求吧,给点实际的数据,和你想要的结果。

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
6 [报告]
发表于 2007-12-17 14:20 |只看该作者

回复 #3 kenancola 的帖子

先上第一课:读新手导航

论坛徽章:
0
7 [报告]
发表于 2007-12-17 14:29 |只看该作者
谢谢楼上,举一个简单的例子吧(首先我的查找都是需要忽略大小写的)
#cat aaa
aaa
BBbbaaaa
cccc
dddd
eeeekkkk

#cat bbb
aaa
aaaddd
BBbaaa

现在我在这两个文件中找出含有 aaa的文件要求 文件名:行数:内容

grep -in aaa aaa bbb |grep bbb

aaa:2:bbbbaaaa
bbb:1:aaa
bbb:2:aaaddd
bbb:3:bbbaaa

然后 grep -in aaa aaa bbb
aaa:1:aaa
aaa:2:BBbbaaaa
bbb:1:aaa
bbb:2:aaaddd
bbb:3:Bbbaaa

然后我想 再找出内容中有 bbb的文件

如果直接再加grep 使用 grep -in aaa aaa bbb |grep -i bbb
aaa:2:BBbbaaaa
bbb:1:aaa
bbb:2:aaaddd
bbb:3:Bbbaaa

但事实上并不对,中间的两行,并不是内容有bbb 而是被文件名给忽悠了。

所以我想从 $3 开始取,但是不知道 awk 有什么办法可以使用类似grep 的-i -f 与-v 选项。
我写这个的目地主要还是想写一个通用的工具,并不是在于这个例子,但还希望大家能帮帮我,谢谢!

论坛徽章:
0
8 [报告]
发表于 2007-12-17 14:35 |只看该作者
to waker :
    我知道自己很菜,但是问题也不是没有经过大脑就来问你了。经验没有丰富,头脑也没你好,不过麻烦你还是不要老是说:

先上第一课:读新手导航
或者是
读基础12篇或新手导航,以及shell版水平测试

这样的话,你倒不如说

man awk
man grep
这样我至少还知道索引在哪儿? 知道要去MAN什么。

我在论谈里时间也不少了,我难道还不知道你们有新手导航,有基础十二篇或者是十三问吗?

[ 本帖最后由 kenancola 于 2007-12-17 14:36 编辑 ]

论坛徽章:
23
15-16赛季CBA联赛之吉林
日期:2017-12-21 16:39:27白羊座
日期:2014-10-27 11:14:37申猴
日期:2014-10-23 08:36:23金牛座
日期:2014-09-30 08:26:49午马
日期:2014-09-29 09:40:16射手座
日期:2014-11-25 08:56:112015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:0315-16赛季CBA联赛之山东
日期:2017-12-21 16:39:1915-16赛季CBA联赛之广东
日期:2016-01-19 13:33:372015亚冠之山东鲁能
日期:2015-10-13 09:39:062015亚冠之西悉尼流浪者
日期:2015-09-21 08:27:57
9 [报告]
发表于 2007-12-17 14:36 |只看该作者
awk '/[aA]{3}/&&/[bB]{3}/{print FILENAME":"FNR":"$0}' aaa bbb

这个意思?

[ 本帖最后由 ly5066113 于 2007-12-17 14:38 编辑 ]

论坛徽章:
0
10 [报告]
发表于 2007-12-17 14:38 |只看该作者
楼上的不能这么说啊,我要是不找aaa呢? 怎么办? 我需要grep 的东东是用户的一个输入
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP