Chinaunix首页 | 论坛 | 博客

lmk

  • 博客访问: 162286
  • 博文数量: 32
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 87
  • 用 户 组: 普通用户
  • 注册时间: 2013-03-17 19:07
文章分类

全部博文(32)

文章存档

2017年(2)

2016年(3)

2014年(14)

2013年(13)

我的朋友

分类: LINUX

2013-09-01 21:38:14

grep的格式:
grep   选项   模式   文件名
        
grep将文件名所在的文件中匹配模式的行打印出来

其中:选项可以同时使用多个
      模式可以是字符串,变量,正则表达式
      文件名可以有多个,可以使用通配功能


注意:无论模式是何种形式,只要模式中包含有空格,就需要将模式用双引号引起来,
      如果不加双引号,空格后的单词就会被误以为是文件名。
      大部分情况下,使用单引号将模式引起来也是可以的。


grep不加选项的默认情况下,
搜索单个文件时,显示每行的内容
搜索多个文件时,显示文件名和每行的内容
只在当前目录下的文件搜索,不对子目录下的文件进行搜索


选项的意义:
1. -c  只输出匹配行的数量
2. -n  列出所有的匹配行,并显示行号
3. -v  显示不包含模式的所有行
4. -i  匹配模式时,不区分大小写
5. -h  查询多个文件时不显示文件名
6. -l  只列出符合模式的文件名,而不列出具体的行
7. -s  不显示文件不存在或者模式不匹配时的错误信息
8. -r  表示递归搜索
9. -w  模式匹配时,匹配整词,不使用元字符的特殊意义。可用于精确匹配。
10. -x 匹配整行内容
11. -q 不再输出任何结果,以退出状态表示搜索是否成功。退出状态0表示搜索成功,1表示为没有搜索到满足模式的行,2表示命令或程序由于错误而没有执行
12. -b 打印匹配行距文件头部的偏移量,以字节为单位
13. -o 与-b配合使用,打印匹配的词距文件头部的偏移量,以字节为单位
14. -E 支持扩展的正则表达式
15. -F 不支持正则表达式,按照字符串的字面意思进行匹配



比较特殊的, - 字符虽然不是元字符,但是由于 - 字符是引出选项的特殊字符,所以当模式以-字符开头时们需要将-转义,既使用\-
,且最好将此时的模式用引号引起来,而不管有没有空格。
举例用法:
1.  grep "\-...." filename



grep支持POSIX字符类
[:upper:]    表示大写字母[A-Z]
[:lower:]     表示小写字母[a-z]
[:digit:]      表示阿拉伯数字[0-9]
[:alnum:]   表示大写字母,小写字母,阿拉伯数字[0-9 a-z A-Z]
[:space:]    表示空格或者tab键
[:alpha:]    表示大写字母,小写字母[a-z A-Z]
[:cntrl:]    表示ctrl键
[:graph:]或者[:print:]   表示ASCII码33-126之间的字符
[:xdigit:]   表示16进制数字[0-9 A-F a-f]

举例用法:
1.grep ^[[:space:]]  filename     查找filename中以空格开头的行
2.grep ^[[:upper:]] filename      查找filename中以大写字母开头的行
使用时注意用[]将POSIX字符类括起来


grep命令族
1.grep:标准的grep命令,支持正则表达式
2.egrep:扩展的grep命令,支持正则表达式和扩展的正则表达式
3.fgrep:快速的grep命令,不支持正则表达式

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