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) |