欢迎关注我的CSDN: https://blog.csdn.net/bingque6535
一. 常用选项
-
-E :开启扩展(Extend)的正则表达式。
-
-i :忽略大小写(ignore case)。
在这里插入图片描述grep -i "AB" test02.txt
-
-v :取反(invert),打印没有匹配的行
在这里插入图片描述grep "a" test02.txt -n -v
-
-n :显示匹配的行号
在这里插入图片描述grep "a" test02.txt -n
-
-w :被匹配的文本只能是单词,而不能是单词中的某一部分
在这里插入图片描述grep -w "bc" -n test02.txt
-
-c :显示有多少行被匹配到了
-
-cv :显示有多少行没有被匹配到
在这里插入图片描述grep "bc" -n -c test02.txt grep "bc" -n -cv test02.txt
-
-o :只显示被模式匹配到的字符串。
在这里插入图片描述grep "bc" -n -o test02.txt
-
--color :将匹配到的内容以颜色高亮显示。
在这里插入图片描述grep "a" test02.txt -n --color=auto
-
-A n:显示匹配到的字符串所在的行及其后n行(after)
在这里插入图片描述grep "bc" -n test02.txt -w -A 3
-
-B n:显示匹配到的字符串所在的行及其前n行(before)
在这里插入图片描述grep "bc" -n test02.txt -w -B 3
-
-C n:显示匹配到的字符串所在的行及其前后各n行(context)
在这里插入图片描述grep "bc" -n test02.txt -w -C 3
二. 基本正则表达式
1. 匹配字符
-
.
:任意一个字符 -
[abc]
:匹配abc中任意一个字符grep "[a-z]" test02.txt
-
[a-zA-Z]
:匹配任意一个字母,grep "[a-zA-Z]" test02.txt
-
[^123]
:匹配除123以外的任意一个字符(数字+字母)grep "[^ab]" test02.txt
-
[A-Z]
:等价于[[:upper:]]
在这里插入图片描述 -
[a-z]
:等价于[[:lower:]]
-
[a-zA-Z]
: 等价于[[:alpha:]]
-
[0-9]
: 等价于[[:digit:]]
-
[a-zA-Z0-9]
:等价于[[:alnum:]]
- tab,space等空白字符:
[[:space:]]
在这里插入图片描述 - 标点符号:
[[:punct:]]
2. 匹配次数
-
\{m, n\}
: 匹配前面出现的字符m-n次
在这里插入图片描述grep "[a-z]\{4,\}" test02.txt
-
\?
: 匹配前面出现的字符0-1次, 相当于\{0, 1\}
-
*
:匹配其前面出现的内容任意次,等价于\{0,\}
,所以 ".*
" 表述任意字符任意次,即无论什么内容全部匹配。
3. 位置锚定:
-
^
:锚定行首
在这里插入图片描述grep "^[a-z]" test02.txt 字母开头
-
$
:锚定行尾。技巧:"
^$
"用于匹配空白行。
在这里插入图片描述grep "[0-9]\$" test02.txt 数字结尾
-
\b
或\<
:锚定单词的词首。如"\blike"不会匹配alike,但是会匹配liker
-
\b
或\>
:锚定单词的词尾。如"\blike\b"不会匹配alike和liker,只会匹配like
-
\B
:与\b作用相反。
4. 分组及引用
-
\(str\)
:将str作为一个整体方便后面引用 -
\n
:引用第n个左括号及其对应的右括号所匹配的内容。# 匹配以相同字母开头和结尾的行 grep "^\([[:alpha:]]\).*\1$" test02.txt
三. 扩展的正则表达式
1. 匹配次数
-
*
:和基本正则表达式一样 -
?
:基本正则表达式是?,这里没有\
。 -
{m,n}
:相比基本正则表达式也是没有了\
。 -
+
:匹配其前面的字符至少一次,相当于{1,}
。
其他部分和普通正则表达式没什么区别
欢迎关注我的CSDN: https://blog.csdn.net/bingque6535
网友评论