grep与正则表达式
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了grep与正则表达式相关的知识,希望对你有一定的参考价值。
第四周本周分享一下grep与正则表达式的一些基本用法,通常配合起来在文本文件中搜索一些想要的内容
文本三剑客之 grep
grep 强大的文本搜索过滤工具,从文件中搜索特定字符显示打印至终端窗口,另外还支持正则表达式与扩展正则表达式
例子 grep ‘nologin‘ /dev/passwd -m5
-m 指定匹配次数,匹配N此后停止
-i 不区分大小写 输入内容的大小写皆匹配出
-n 显示匹配到行的行号
-v 取反 输入字符外其他字符皆匹配
-c 统计匹配到总行数
-o 仅显示匹配的字符,不会整行显示
-q 静默模式 匹配到的字符不会输出至终端窗口
-A1 连带显示匹配行后的1行
-B2 连带显示匹配行前的2行
-C3 连带显示匹配行前后各三行
-e 可跟多个关键字匹配
-w 仅匹配关键字为单个单词 (数字、字母、下划线组成)
-f 关键子从文件中匹配
-E 使用扩展正则表达式 等同于 egrep
正则表达式
正则表达式,可以用特定符号代替某一类字符来进行匹配,可以指定匹配的位置、次数 、以及分组替用
字符匹配:
列子 grep ‘[[:alnum:]]‘ /etc/passwd
. 匹配任意单个字符
[ ] 匹配中括号内任意单个字符
[^] 取反 如[^A] 匹配A以外所有字符
[:alnum:] 任意字母和数字
[:lower:] 任意小写字母
[:upper:] 任意大写字母
[:alpha:] 任意大小写字母 等同于[a-zA-Z]
[:blank:] 空白字符
[:space:] 空白字符 水平空白符和垂直空白符
[:cnatl:] 不可打印控制字符(退格、删除、警铃)
[:dinht:] 十进制数字
[:xdigit:] 十六进制数字
[:graph:] 可打印的非空白字符
[:print:] 可打印的字符
[:punct:] 标点符号
次数匹配:
例子:grep ‘[[:alnum:]]*‘ /etc/passwd
* 匹配*号前字符任意次,包括零次
.* 匹配任意字符、任意长度
\? 匹配零次或一次
\3\ 匹配3次
\1,3\ 匹配前面字符出现最少1次,最多3次
\,3\ 匹配最多3次
\1,\ 匹配最少1次
另有扩展正则表达式,用法基本与正则表达式一致,扩展正则表达式中的次数匹配中\可直接省略不写
  位置锚定:
例子:grep ‘^[[:alnum:]]‘ /etc/passwd
^ 行首锚定 一行的最坐侧
$ 行尾锚定 一行的最右侧
^$ 匹配空行 或^[[:space:]]*$ 空行
\< 词首锚定 或\b 用在指定字符前
\> 词尾锚定 或\b 用在指定字符后
分组:
\(\) 将一个或多个字符捆绑在一起,作为一个分组,一个整体
例子 \(ace\) ace为一个整体 第一个分组可用\1直接代替,代表ace
分组可多层套用 : \(string1\(string2\)\)
\1 : string1\(string2\)
\2 : string2
\| 或 如1\|2 , 匹配1或2
以上是关于grep与正则表达式的主要内容,如果未能解决你的问题,请参考以下文章