Chinaunix首页 | 论坛 | 博客
  • 博客访问: 45507
  • 博文数量: 19
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 28
  • 用 户 组: 普通用户
  • 注册时间: 2014-12-16 14:42
文章分类
文章存档

2015年(16)

2014年(3)

我的朋友

分类:

2015-03-12 17:11:38

grep的语法
grep [-acinv] '搜索字符串'  filename
-a:在二进制文件中,以文本文件的方式搜索数据
-c:计算找到‘搜索字符串’的次数
-i:忽略大小写的不同,所以大小写视为相同
-n:输出行号
-v:反向选择,即显示出没有‘搜索字符串’内容的那一行

搜索特定的字符串,最简单的
grep -n 'the' a.txt

搜索不含the的行
grep -vn 'the' a.txt

利用[]来搜索集合字符,搜索tast或test的行
grep -n 't[ae]st' a.txt

搜索不含以g开头,含有oo的行
#grep -n '[^g]oo'  a.txt
google is the best tools for search keyword (因为tools有包含oo,所以也提取出来)
gooooooogle  yes (虽然以goo开头,但是后面还有好几个oo,刚好适合)
hehe ooo

查找不以小写开头含oo的行
grep -n '[^a-z]oo' a.txt

查找含有数字的行
grep -n '[0-9]' a.txt

查找以the开头的行
grep -n '^the' a.txt

查找以小写开头的行
grep -n '^[a-z]' a.txt

查找不以英文字母开头的行
grep -n '^[^a-zA-Z]' a.txt

查找行尾为小数点(.) 的行
grep -n '\.$' a.txt

找出空行
grep -n '^$' a.txt

任意一个字符(.) 与 重复字符(*)
通配符(*)可以用来代表任意(0或多个)字符。但是正则表达式并不是通配符。
正则表达式中*表示重复0个或多个前面的RE字符.
因此(o*)表示拥有空字符或者至少一个o及多个o以上的字符
(ooo*) 代表至少有两个o或者两个o以上的字符

查找包含4个字符,以g和d结尾的单词的行
grep -n 'g..d' a.txt

查找出g开头与g结尾的字符串,当中的字符可有可无。
grep -n 'g*g' a.txt
结果不是我们要的,因为这样的话是查找含有0个或多个g开头的,然后接着g,也就是g gg ggg gggg都可以的行

.可以代表任意字符,因此可以这样子
grep -n 'g.*g' a.txt
这样就可以查找出想要的。

查找任意数字的行
grep -n '[0-9][0-9]*' a.txt

限定连续重复字符范围{}
* 代表0个到无限个字符,{}却可以限定几个字符或范围

查找2个o的行
grep -n 'o\{2\}' a.txt

查找2个到5个o的行
grep -n 'o\{2,5\}' a.txt

查找2个o以上的行 以下两种方法均可以
grep -n 'ooo*' a.txt
grep -n 'o\{2,\}' a.txt 


阅读(846) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~