grep使用详解
格式:grep [OPTION] PATTERN filename
1、[OPTION]
- -a:以文本方式搜索
- -q:不输出任何信息
- -c:计算找到的符合行的次数
- -i:忽略大小写
- -n:输出行号
- -v:显示不能够被pattern匹配到的行
- -o:仅显示匹配到的内容的行
- -h:查询多文件时不显示文件名
- -l:查询多文件时只输出包含匹配字符的文件名
- -s:不显示不存在或无匹配文本的错误信息
- -E:使用扩展正则表达式,相当于egrep
- -w:默认匹配一个单词
2、pattern
(1)、通配符
- *:0个或者多个字符、数字
- ?:匹配任意一个字符
- #:表示注解
- |:管道符号
- ;:多个命令连续执行
- &:后台运行指令
- !:逻辑运算非
- []:内容范围,匹配括号中内容
- {}:命令块,多个命令匹配
(2)、正则表达式
字符匹配:
- .:匹配任意单个字符
- []:匹配指定范围内的单个字符
- [^]:匹配指定范围外的单个字符
- [:digit:]:匹配十进制数字,等同于[0-9]
- [:lower:]:匹配小写字母
- [:upper:]:匹配大写字母
- [:alpha:]:匹配字母字符,等同于[a-z][A-Z]
- [:alnum:]:匹配字母数字字符,等同于[a-z][A-Z][0-9]
- [:punct:]:匹配标点字符
- [:space:]: 匹配空格字符(空格和制表符)
匹配次数:用在要指定次数的字符后面,用于指定前面的字符要出现的次数
- *:匹配前面的字符任意次(包括0次)
- .*:任意长度的任意字符
- ?:匹配其前面的字符0次或1次
- +:匹配其前面的字符至少1次
- {m}:匹配其前面的字符m次
- {m,n}:匹配其前面的字符至少m次,至多n次
- {0,n}:匹配其前面的字符最多n次
- {m,}:匹配其前面的字符最少m次
位置锚定:
- ^:行首锚定,用于模式的最左侧
- $:行尾锚定,用于模式的最右侧
- ^PATTERN$:用于匹配整行
- ^$ 或者 ^[[:space:]]*$:空行
- <:词首锚定,用于单词模式的左侧
- >:词尾锚定,用于单词模式的右侧
- \:匹配整个单词
分组
- ():将一个或多个字符捆绑在一起,当作一个整体处理
- (xy)*ab
tips:
分组括号中的模式匹配到的内容会被正则表达式引擎记录于内部的变量中,这些变量的命名方式为:\1,\2,\3,…
判断\1,\2,…的方法:
从左侧起,第一个左括号以及与之匹配的右括号之间的模式所匹配到的字符
eg:(ab+(xy))
\1:ab+(xy)
\2:xy