免费注册 查看新帖 |

Chinaunix

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

[学习分享] grep的一些个人总结 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-05-11 17:34 |只看该作者 |倒序浏览
grep 强大的搜索工具  

使用的时候可以加上别名这样可以一眼看出搜索到的关键词
alias grep='grep --color=auto'

参数: -n显示行号    -i搜索时不区分大小写  -v反向显示,显示没有搜索词的部分

【】 括号中间可以表示2个数值中相同的值 如 tast test 要同时搜索他们时可以这样写
列: grep -n 't[ae]st' gz.txt    gz.txt为搜索的文档

#grep -n 'oo' gz.txt
1:"Open Source" is a good mechanism to develop programs.
2:apple is my favorite food.
3:Football game is not use feet only.
9:Oh! The soup taste good.
18:google is the best tools for search keyword.
19:goooooogle yes!

【^g】oo 如果不想要oo前面显示g 可以这样写  
#grep -n '[^g]oo' gz.txt
2:apple is my favorite food.
3:Football game is not use feet only.
18:google is the best tools for search keyword.
19:goooooogle yes!
如果不想显示所有的小写字母  =  grep -n '[^a-z]oo' gz.txt
               同样大写是  =  grep -n '[^A-Z]oo' gz.txt
                     数字  =  grep -n '[^0-9]oo' gz.txt
                 组合起来  =  grep -n '[^a-zA-Z0-9]' gz.txt
注意这里强调的是【^】 括号中加 ^ 来去除搜索词前的 指定值,所以不要忘记加 ^

如果不加 ^ 就像下面的结果了
[root@mini 88]# grep -n '[0-9]' gz.txt
5:However, this dress is about $ 3183 dollars.
15:You are the best is mean you are the no. 1.
可以看出这样搜索了 包含0-9的值

行首与行尾字符 ^ $:
同样搜索the但只要the在行首的 也就是在一列最前面 写法如下
grep -n '^the' gz.txt  在要搜索的关键词前 加 ^   
12:the symbol '*' is represented as start.

怎么搜索所有a-z在行首的值呢?
grep -n '^[a-z]' gz.txt   

不想开头是英文字母的怎么搜索呢?
grep -n '^[^a-zA-Z] gz.txt
1:"Open Source" is a good mechanism to develop programs.
21:# I am VBird
也可以这样写
grep -in '^[^a-z]' gz.txt 还记得吗加个 i 不区分大小写

  ^加在【】外面是搜索开始是什么的值       加在【^】 括号里是搜索不包含它后面的值

下面说行尾怎么搜索
这里需要用到 $ 这个个符号

搜索结尾是the结尾的列
[root@mini 88]# grep -n 'the$' gz.txt
12:the symbol '*' is represented as start.the

如果是要搜索以 . 结尾的列,需要加上 \ 因为 点 有特殊意义所以要加跳脱字符\来解除其特殊意义
grep -n '\.' gz.txt

搜索没有数据的那列
[root@mini 88]# grep -n '^$' gz.txt          行首+行尾
19:

下面命令的含义是?
grep -vn '^$' gz.txt |grep -v '^#'

. 任意一个字符  * 重复字符
. 代表任意一个字符
找出前后是gd g??d 中间2位随意的值,在这里中间2位就可以用 . 来代替
[root@mini 88]# grep -n 'g..d' gz.txt
1:"Open Source" is a good mechanism to develop programs.
9:Oh! The soup taste good.
16:The world <Happy> is the same with "glad"

* 表示重复字符
grep -n 'o*' gz.txt   这里一个o会搜索出拥有一个o 或者空字符的所有值
grep -n 'oo*' gz.txt  这样表示第一个o必须存在,第二o则可以有无限多个
grep -n 'ooo* gz.txt  前面2个o必须存在,第3个o则可以有无限多个
*前面那位值 是*的定义 而不是必要条件 请在*前加上定义 然后在加上条件

限定连续 RE 字符范围 {}   RE:表示正则表达式

因为 { 与 } 的符号在 shell 是有特殊意义的,
因此, 我们必须要使用跳脱字符 \ 来让他失去特殊意义才行。

搜索2个oo的字符串,需要这样写
[root@mini 88]# grep -n 'o\{2\}' gz.txt
1:"Open Source" is a good mechanism to develop programs.
2:apple is my favorite food.
3:Football game is not use feet only.
9:Oh! The soup taste good.
18:google is the best tools for search keyword.
20:goooooogle yes!

写法格式 grep -n 'go\{2,5\}g' gz.txt 找出 g 后面2到5个 o 然后再接一个 g 的字符串


前后的2个g 是在o这个条件下 前后想要什么 {}中实际还是o的需求定义

如果想要的是 2 个 o 以上的 goooo....g 呢?除了可以是 gooo*g ,也可以是:
grep -n 'go\{2,\}g' gz.txt

求职 : Linux运维
论坛徽章:
203
拜羊年徽章
日期:2015-03-03 16:15:432015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:57:092015小元宵徽章
日期:2015-03-06 15:58:182015年亚洲杯之约旦
日期:2015-04-05 20:08:292015年亚洲杯之澳大利亚
日期:2015-04-09 09:25:552015年亚洲杯之约旦
日期:2015-04-10 17:34:102015年亚洲杯之巴勒斯坦
日期:2015-04-10 17:35:342015年亚洲杯之日本
日期:2015-04-16 16:28:552015年亚洲杯纪念徽章
日期:2015-04-27 23:29:17操作系统版块每日发帖之星
日期:2015-06-06 22:20:00操作系统版块每日发帖之星
日期:2015-06-09 22:20:00
2 [报告]
发表于 2015-05-11 22:00 |只看该作者
最重要还是正则

论坛徽章:
18
处女座
日期:2014-11-13 15:52:322015亚冠之胡齐斯坦钢铁
日期:2015-08-14 16:09:082015亚冠之北京国安
日期:2015-06-02 18:41:152015亚冠之广州恒大
日期:2015-06-02 18:41:15NBA常规赛纪念章
日期:2015-05-04 22:32:032015年亚洲杯之中国
日期:2015-04-01 16:38:392015小元宵徽章
日期:2015-03-06 15:58:182015年亚洲杯之阿联酋
日期:2015-03-06 09:33:432015年辞旧岁徽章
日期:2015-03-04 13:32:472015年迎新春徽章
日期:2015-03-04 10:01:44拜羊年徽章
日期:2015-03-03 16:15:43洛杉矶快船
日期:2015-03-02 16:05:34
3 [报告]
发表于 2015-05-12 15:53 |只看该作者
感谢楼主分享,,还是很详细的。

论坛徽章:
6
CU大牛徽章
日期:2013-03-14 14:14:08CU大牛徽章
日期:2013-03-14 14:14:26CU大牛徽章
日期:2013-03-14 14:14:29处女座
日期:2014-04-21 11:51:59辰龙
日期:2014-05-12 09:15:10NBA常规赛纪念章
日期:2015-05-04 22:32:03
4 [报告]
发表于 2015-05-17 20:51 |只看该作者
非常棒的分享,感谢楼主这样的分享精神!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP