昨天,学习了正则中元字符的一部分,今天,学习正则中元字符的另一部分,和扩展正则表达式。
正则中元字符
^[]
例子:匹配以#开头的行 grep ^[#] file
[^a] 匹配除了a意外的任意字符 grep [^a] file
过滤没有包含qaz的行 grep [^qaz] file
过滤出#开头后面有一个空格的行 grep “^[[:space:]]” 2.txt
5) 显示匹配到的行的前的若干行
-An:显示匹配到的内容的后n行 -Bn:显示匹配到的内容的前n行
-Cn:显示匹配到的内容的前后各n行
例子:匹配包含到root的行的前3行。 答: grep -B3 “root” file
6)次数匹配
“*” 前面字符出现了任意次数 (0,1,n) 例子: a*
“.*” 表示任意长度的任意字符 例子:a.*b grep “a.b” 2.txt
"?" 表示其前面字符出现最多一次
例: a\{m,n}b -E a{m,n}b b前面的a至少出现m,最多n次
grep -E "a{1,1}b" 2.txt grep -E "a?b" 2.txt b前面的a至少1次
grep -E "a{1,}b" 2.txt b前面的a至少1次最多不限
7)位置锚定
^ 表示以n为开头的行 $ 表示以n为结尾的行
例:以yum为结尾的行 grep "yum$" file
\<n 表示单词首部 n\> 表示单词尾部 ^$ 表示空白行
8) 分组
\( \) 将一个内容当作一个整体看待 \1 \2
例子:在11.txt中,过滤出出现过俩个相同数字的行 grep "\([[:digit:]]\).*\1" 2.txt
扩展正则表达式
基础正则: grep [选项] 匹配内容 文件
扩展: grep -E 匹配内容 文件 egrep 匹配内容 文件
{1,} 等同 + : 其前面的字符至少出现过1次。 或:|
例子:过滤出开头是a(不区分大小写) 的行
答: egrp "^(a|A)" 2.txt 或者 egrep "^[aA]" 2.txt