您的位置:首页 > 运维架构 > Shell

shell脚本学习笔记之grep命令用法

2015-08-06 19:28 836 查看
***grep基本用法
grep [选项] [模式] [文件..]

选项
-c 只输出匹配行的数量
-i 搜索时忽略大小写
-h 查询多文件时不显示文件名
-l 只搜索匹配的文件名,而不列出具体的匹配行
-n 列出所有的匹配行,并显示行号
-s 不显示不存在或无匹配文本的错误信息
-v 显示不包含匹配文本的所有行
-w 匹配整词
-x 匹配整行
-r 递归搜索,不仅所属当前工作目录,而且搜索子目录
-q 禁止储存任何结果,以推迟状态表示所属是否成功
-b 打印匹配行距文件的头部的偏移量,以字节为单位
-o 与-b选项结合使用,打印匹配的词距文件头部的偏移量,以字节为 单位
-E 支持扩展正则表达式
-F 不支持正则表达式,安装字符串的字面意思进行匹配
模式
字符串
变量
正则表达式

1.grep搜索含有空格的文件或字符需要使用引号括起来
2.grep搜索多个文件时可以使用通配符

grep结合正则表达式

1.匹配行首
例子:
grep ^a file 查找文本中以a为行首的行

例子:grep -c ^$ file 查找文本中的空白行数

grep -c ^[^$] file 查找文本中的非空白行数

2.设置大小写
grep -n [Cc] file 不区分大小写的查找含c的行
grep -n -i c file

3.匹配重复字符
grep ^/..../ file 匹配以/开头中间任意四个字符并以/结尾的共六个字符

grep ^-*B 查看行首含有0个“-”或任意个“-”的并以B结尾的匹配

4.转义符
例子1:转义“.”
grep www\.example\.com 搜索含有www.example.com的行

例子2:转义“-”
grep '\-{5\} file

5.POSIX字符
[:upper:] 表示大写字母[A-Z]
[:lower:] 表示小写字母[a-z]
[:digit:] 表示数字[0-9]
[:alnum:] 表示大小写字母和数字[0-9a-z-A-Z]
[:space:] 表示空格或Tab键
[:alpha:] 表示大小写字母[A-Z-a-z]
[:cntrl:] 表示ctrl键
[:graph:]或[:print:] 表示ASCII吗33-126之间的字符
[:xdigit:] 表示16进制数字[0-9A-F-a-f]

例子:
grep ^[[:upper:]] file 查找行首字符以大写字母开头的行
POSIX字符需要用[]括起来

6.精确匹配
grep "\<the\> 匹配含有单词the的行
必须带引号

7.或字符(扩展正则表达式字符)
grep -E "ou|se" 匹配带有ou或se的行

8.egrep和fgrep
egrep "ou|se" file
egrep "^-+b" file 匹配以一个"-"或多个“-”开头并且后面含有b的行

fgrep ca file 只能匹配字符

[0-9]* 。[A-Za-Z][A-Z-a-z]

*.doc *.txt *.ppt *.docx *.pptx

grep -n -i chapter *.doc ..
grep -n [cC][hH][aA][pP][tT][eE][rR] *.doc ...

grep -r -c ^$ *
grep -c ^$ *

grep -E :$|[^[:alpha]]

本文出自 “岁寒,然后知松柏之后凋也” 博客,请务必保留此出处http://endmoon.blog.51cto.com/10533729/1682382
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: