grep正则表达式
grep这个名令是用来查找并显示符合给定条件的行的,其用法可以简单的描述为
grep 选项 ‘模型’文件
先做个简单的示范,比如我们要查找~/etc/passwd中含有root这个字符串的行
命令 grep ‘root’ /etc/passwd,为了显示效果明显呢,我们加个高亮命令
grep --color=auto‘root’/etc/passwd,结果如下
alias grep=’grep --color=auto’,注意这里得加引号,单双引号都行
接下来,我们来详细的介绍一下grep的元字符
^:锚定行首,用法
$:锚定行尾,用法
^字符串$:行首行尾都是所选字符串
^$:查找空白行,这里我们引入管道至wc -l,就能看到空白行的个数
这里我们使用nano命令创建个hu.txt,里面我们可以随便写入内容
. :匹配任意单个字符
* :匹配紧挨在其前面的字符任意次
.*:匹配任意长度的任意字符
[]:匹配指定范围内的任意单个字符,常用的有:
[:lower:]:a-z、[:upper:]:A-Z、[:digit:]:0-9、[:alpha:]:A-Z,a-z、[:alnum:]:0-9,A-Z,a-z、[:space:]:任何会产生空白的字符、[:punct:]:标点符号。
[^]:匹配指定范围外的任意单个字符
\?: 匹配紧挨在其前面的字符0次或1次;
\{m,n\}: 匹配其前面的字符至少m次,至多n次;
\{0,n\}: 至多n次;0-n次;
\{m,\}:至少m次
\{m\}: 精确匹配m次;
\<: 锚定词首,用法格式:\<pattern\b: \bpattern
\>: 锚定词尾,用法格式:pattern\>\b: pattern\b
\<pattern\>:锚定单词
\(\): 分组,用法格式: \(pattern\)
这里注意 命令里面的\1,当前面有2组或者3组字符串的时候,\2,\3分别表示和2或3组的字符串保持一致
grep的选项:
-v: 反向选取,只显示不符合模式的行;
-o: 只显示被模式匹配到的字串,而不是整个行;
-i: 不区分字符大小写;
-B #:前面的#行;
-C #:前后的#行;
-E: 使用扩展的正则表达式
grep -E = egrep
补充:涉及到变量替换的时候,要用双引号
egrep 扩展正则表达式
.: 任意单个字符
[]:
[^]:
*
+: 匹配其前面的字符至少1次;
?:
{m,n}: 至少m次,至多n次;
():分组,支持引用\1,\2;
a|b: 二选一;
\<
\>
^
$
其中大部分用法同grep,多出+, a|b
+相当于\{1,\},因此并不难,切记,此处不加\
a|b:二选一